Проблема с вашим кодом в том, что вам нужно вызвать int(guess)
, а затем использовать результат этого, если вы хотите сравнить значение как int.
Наименьшее изменение в вашем коде будет следующим:
# everything before this if stays the same
if guess.isdigit() == False:
guess = input("Please enter valid number: ")
continue
guess = int(guess)
if guess > num:
print("Lower!")
# the rest of the code is the same after here
То есть continue
означает пропустить остаток тела цикла и вернуться к while
.
Если это сбивает с толку, вы можете переписать такие вещи:
# everything before this if stays the same
if guess.isdigit() == False:
guess = input("Please enter valid number: ")
else:
guess = int(guess)
if guess > num:
print("Lower!")
# the rest of the code is the same after here (but still indented)
Или, за счет некоторого дополнительного повторения (что делает код более многословным и менее эффективным, и дает вам больше изменений, чтобы сделать его неправильным):
if guess.isdigit() == False:
guess = input("Please enter valid number: ")
elif int(guess) > num:
print("Lower!")
elif int(guess) < num:
print("Higher!")
elif int(guess) == num:
print("YOU GOT IT!!!!!")
# etc.
Наконец, вы можете рассмотреть несколько большее изменение: самый простой способ проверить, может ли строка интерпретироваться как int, - это просто try
интерпретировать ее как int. В отличие от isdigit
, это будет работать правильно, если, скажем, они содержат дополнительные пробелы до или после цифр, или если они используют подчеркивания для разделения группы цифр, или если они используют цифры Unicode от какого-либо другого языка. Для этого:
try:
guess = int(guess)
except ValueError:
guess = input("Please enter valid number: ")
continue
if guess > num:
# etc.