Как определить, является ли ввод пользователем допустимым шестнадцатеричным числом?

#Hex Check def Check(): while False: for char in UserInput: if char not in Valid: print ('That is an invalid hex value.') print('That is a valid hex value.') return Check UserInput=input('Enter a hex number: ') Valid='1''2''3''4''5''6''7''8''9''10''A''B''C''D''E''F' 

EDIT: Я пробовал это. Когда я вводим шестнадцатеричное значение, например B2, сообщение не появляется.

6 Solutions collect form web for “Как определить, является ли ввод пользователем допустимым шестнадцатеричным числом?”

Измените строку 6 на

 Hex=int(input('Enter a hex number: '), 16) 

Эта строка успешно проанализировала бы любой шестнадцатеричный ввод (например, «0x123f») и выбросила значение ValueError на недопустимый вход (например, «привет»).

ETA: основываясь на ваших комментариях, вам необходимо следующее:

 user_input = input('Enter a hex number: ') try: hexval = int(user_input, 16) print 'That is a valid hex value.' except: print 'That is an invalid hex value.' 

ETA: Если вам действительно Check функция Check , эта структура будет лучшим способом сделать это:

 import re def Check(s): """Check if a string is a valid hexadecimal number""" # code for checking if it is a valid hex number here user_input = raw_input("Enter a hex number: ") if Check(user_input): print 'That is a valid hex value.' else: print 'That is an invalid hex value.' 

Поскольку это вопрос домашней работы, я не собираюсь закончить ответ – просто знайте, что функция Check должна возвращать True, если строка является допустимым шестнадцатеричным выражением или False, если строка не указана.

Есть много идей среди ответов каждого о том, как это сделать, и вы действительно можете использовать оператор try / except, как я делаю выше. Один из лучших способов сделать это – использовать регулярные выражения , которые являются очень мощным способом анализа строк.

Исследуйте библиотеку регулярных выражений. Или сделайте явное приведение в int, затем поймайте любые ошибки и обработайте их соответственно.

Единственными допустимыми значениями для шестнадцатеричных строк являются 0-9, AF . Должно быть возможно сохранить эти значения в списке / массиве, а затем сделать простой содержащий вызов. Что-то вроде этого:

  for char in userInput: if not char in validTokens: print 'invalid hex value' 

Вот хороший способ Python проверить ваш ввод для действительного шестнадцатеричного номера.

 def Check(): while not Valid: try: Hex=int(raw_input('Enter a hex number: '), 16) print('That is valid.') return True except ValueError: print('That is an invalid entry.') return False 

Я отвечаю на этот вопрос с точки зрения философии Python, потому что вы уже получили хорошие ответы, некоторые из которых связаны с try: .. except .

Питоническая вещь об использовании обработки исключений try: .. except того, как программисты Python, по-видимому, поощряются к использованию, это, по крайней мере для меня, уход от обработки исключений на других языках.

В Python вам предлагается создать исключение, явно используя рейз или более неявно внутри конструкции try .. except.

Когда я задал вопрос о том, как обращаться с нулевыми целыми значениями в CSV-файле, мне было предложено продолжить назначение целочисленной переменной Python в try: .. за исключением того, что вместо тестирования сначала проверить см., если значение было null.

Ответ продолжался, чтобы не утруждать себя проверкой, а затем принять меры, использовать обработку исключений, потому что это больше Pythonic. Использование try: .. кроме того, как оказалось, потребляет меньше инструкций.

Это отношение заставило меня написать больше обработки исключений, чем я думал бы с помощью try: .. за исключением был зарезервирован только для тех случаев, когда происходят плохие вещи.

Выражение string.translate (x, None, "0123456789abcdefABCDEF") == '' равно True, если x содержит допустимые шестнадцатеричные символы, или x – это нулевая строка. (Вам нужно «импортировать строку».) Очевидно, это можно использовать для подтвердите, что строка содержит только символы из любого заданного набора (или равна нулю).

  • python - умножить и добавить каждый элемент в списке a со списком b
  • Использование Python для соответствия точному слову
  • Создайте хороший URL-адрес для ключа с предками
  • получение последовательных смежных элементов списка
  • Как выполнить глубокие сравнения равенств двух списков кортежей?
  • Сопоставьте поле отправителя электронной почты с движком Google
  • Python 3.1 Проблемы с «Ещё:» в моем коде
  • Что означают квадратные скобки, «», в документации по функциям / классу?
  • Как читать файл конфигурации с помощью python
  • Как проверить ввод с огромным списком?
  • Как определить исходный код в тексте?
  •  
    Interesting Posts for Van-Lav

    Как превратить строку в список в python?

    Перенесите переменную в исходное значение (определенное до цикла) при запуске каждой итерации в цикле

    Реализация Python алгоритма «медианы медианов»

    Получите N максимальных значений и индексов вдоль оси в массиве NumPy

    Как предотвратить завершение запущенной программы с помощью «ctrl + c» в Linux с помощью python?

    Обнуление результатов доктрины python, длина которых превышает 80 символов

    Получить местный часовой пояс в джанго

    Декодирование экранированных символов в URL

    numpy: syntax / idiom для массива (n,) для массива (n, 1)?

    Запросить выравнивание UAC из сценария Python?

    Класс PyQt не работает для второго использования

    Как закрыть вкладку в Интернете с помощью cmd / Python?

    Отладка сельдерея djcelery через pdb

    SymPy / SciPy: решение системы обыкновенных дифференциальных уравнений с различными переменными

    Сортировка массива ND numpy другим 1-D массивом

    Python - лучший язык программирования в мире.