Django, обнаружение, является ли переменная числом

в функции в Django пользователь может отправить мне число или строку, и я хочу знать, получил ли я число или строку (Совет: число всегда будет целым числом между 1-6)

Я хочу знать, можно ли это обнаружить и как (с примером), так как число или строка, которые я получаю, скажут мне, что делать дальше.

3 ответов


вы можете попытаться преобразовать строку в число с помощью int(), ловя исключение:

def isNum(data):
    try:
        int(data)
        return True
    except ValueError:
        return False

возвращает True только если строка может быть преобразована в целое число.


о: if isinstance(data, int):


Я предполагаю, что ваш номер будет помещен в строку, т. е. "1 "или" 4 "или" 6 " - если это так, то есть несколько способов сделать это; вы можете использовать регулярное выражение, чтобы проверить, является ли это числом или нет, или вы можете запустить функцию, которая будет выглядеть примерно так

def isNumber(your_input_string):
    return len(your_input_string) == 1 and your_input_string in "123456"

Так как число всегда будет между 1 и 6, это может быть только строка длины 1, и она должна содержаться в строке '123456', так как... ну, это разрешено числа.

редактировать:

Как указал Мартийн Питерс в комментариях ниже, это окольный способ сделать это; более простым решением было бы просто проверить, находится ли строка между " 1 " или "6".

def isNumber(your_input_string):
    return len(your_input_string) == 1 and '1' <= your_input_string <= '6'