2017-02-17 2 views
0

Я создаю простую программу Python, которая запрашивает основную информацию о пользователе.Если ошибка инструкции в базовом информационном вводе

myAge= input() 
if myAge > 20:  
    print ('You must be old enough to party legally now.') 
else:  
    print ('Put that drink down!') 

МОЯ ОШИБКА

if myAge > 20: TypeError: '>' not supported between instances of 'str' and 'int'

ответ

0

Как туАде должен быть целым числом, то лучше, чтобы преобразовать его, как только пользователь вводит его:

myAge= int(input()) 
... 
if myAge > 20: 
... 

и поэтому, чтобы сбой немедленно, если он не вступил в действующий возраст.

Вы также можете поймать ошибку и еще раз спросить:

while True: 
    try: 
     myAge= int(input("Please enter your age: ")) 
     break 
    except ValueError: 
     print("Your age must be an integer") 

if myAge > 20:  
    print ('You must be old enough to party legally now.') 
else:  
    print ('Put that drink down!') 
+0

Очень классное дополнение, спасибо! Теперь, как я могу узнать, какие функции я могу использовать и как они работают. например, для поиска того, что пытается: означает или что означает средство разрыва и т. д. – SplendidMallard

+0

Учебник Python - полезная ссылка - https://docs.python.org/3.6/tutorial/errors.html (и объясните тот же пример, на самом деле...). И вы все равно можете использовать все, что вам нужно, вы найдете много ответов! –

1

input() функция возвращает строку в качестве значения, и вы не можете сравнить строку и целое число, для того, чтобы это сделать, вам нужно выполнить что-то вроде следующего в случае, если:

myAge= input() 
if int(myAge) > 20:  
    print ('You must be old enough to party legally now.') 
else:  
    print ('Put that drink down!') 
+0

Это поднимет 'ValueError' для чего пользователь вводит, который не может быть преобразован в' int' ... – zwer

+0

да @zwer, но я полагаю, что это просто для некоторого простого использования, конечно, мы могли бы это сделать в блоке try, но это, однако, упрощенный пример. –

Смежные вопросы