Итак, я пытаюсь написать небольшой скрипт в python, который будет дифференцировать входы, а когда соответствующий ввод задан, int
, он даст корреляционный ответ. Я знаю, что есть несколько сообщений по этой теме, которые похожи, но мне не удалось найти ответ. Вот что у меня есть.Nameerror: name 'h' не определен
oktas = input("Oktas: ")
def sky_condition(oktas):
if isinstance(oktas, int) == True:
if oktas == 0:
print ("CLR")
elif oktas == 1 or oktas == 2:
print ("FEW")
elif oktas == 3 or oktas == 4:
print ("SCT")
elif oktas >= 5 and oktas <= 7:
print ("BKN")
elif oktas == 8:
print ("OVC")
elif oktas < 0 or oktas > 8:
raise ValueError("Oktas provided are above or below the allowed limits.")
elif isinstance(oktas, int) == False:
raise NameError("You suck at following instructions.")
skycondition(oktas)
Когда вы кладете в int
или str
(как-то в «кавычки»), то он обрабатывает все, как следует. Однако, если я просто положить письмо или слово без кавычек, например, ч, это вызывает ошибку
NameError: name 'h' is not defined
Он производит ошибку, я хочу, но не так, как я хотел. Как я могу закодировать его, чтобы он поднимет ошибку, как я этого хочу?
Это Python 2? Если это так, вам следует использовать 'raw_input' вместо' input', а затем попытаться преобразовать в целое число с помощью 'int (oktas)'. (также добавьте тег 'python-2.x', потому что это одна область, где поведение отличается от Python 3) – Aurora0001
' isinstance' уже возвращает логическое значение; нет необходимости проверять, совпадает ли это с другим булевым значением, чтобы генерировать * третье * булево значение. – chepner
См. Нюансы 'input' (который является вашей проблемой) в этом другом [stackoverflow answer] (http: // stackoverflow.com/a/15129556/5847976) – jadsq