Задачи с угадыванием целых чисел

Я новичок в программировании, и я создаю игру-угадайку для развлечения в качестве первой программы. Я уже понял следующее:

  • Как установить конкретное число, чтобы они угадывали от 1 до 50 (например)
  • Что происходит, когда они угадывают вне параметров
  • Количество догадок и попыток «сломать игру»
  • Включены циклы while, полные операторов if

Однако я не могу понять, как запретить пользователю вводить в игру что-либо, кроме числа. Я хочу, чтобы они могли это сделать, но я хотел бы распечатать личное сообщение об ошибке, а затем выйти из цикла while. (По сути, окончание игры).

Это настолько близко, насколько я мог предположить:

if guess == number:
    print('Hey wait! That\'s not a number!')
    print('Try again tomorrow.')
    guessed = True
    break

Я получаю сообщение об ошибке: «ValueError: недопустимый литерал для int() с базой 10», и я не знаю, как это понять. Я читал об isdigit и isalpha и пробовал возиться с ними, чтобы посмотреть, что происходит, но получаю ту же ошибку. Может быть, я просто помещаю его в неправильный раздел кода

Любые подсказки? :)

Благодарю вас!


person Terence    schedule 14.05.2020    source источник


Ответы (2)


Используйте try/except для обработки исключений:

try:
    guess = int(input("What's your guess? "))
except ValueError:
    print("Hey wait! That's not a number!")
    print("Try again tomorrow.")
    guessed = True
    break
# otherwise, do stuff with guess, which is now guaranteed to be an int
person Samwise    schedule 14.05.2020
comment
получая всевозможные сообщения об ошибках повсюду. Должен ли отступ быть именно таким, как вы его выразили? Наиболее распространенным является то, что вторая половина моего кода недоступна. - person Terence; 14.05.2020
comment
Да, отступ важен в Python, потому что он определяет, где блоки начинаются и заканчиваются, подобно фигурным скобкам в других языках! Вторая часть вашего кода должна иметь отступ на том же уровне, что и try и except (такой же, как закомментированная часть в моем коде), чтобы указать, что блок с отступом под except закончился. - person Samwise; 14.05.2020
comment
Ах понятно. Спасибо! Я создам новый файл, чтобы проверить все это =) (Почти сохранен поверх моего файла с кучей ошибок. ха-ха - person Terence; 14.05.2020

Вы можете использовать try/except, чтобы попытаться выполнить приведение к целому числу или числу с плавающей запятой, а затем, если приведение не удается, поймать ошибку. Пример:

try:

   guessInt = int(guess)

except ValueError:

   print('Hey wait! That\'s not a number!')
   print('Try again tomorrow.')
   guessed = True
   break



person Mike    schedule 14.05.2020