Как проверить данные в Python, используя строку и Int? - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь сделать небольшую игру в угадайку на python, используя случайный импорт.

Проблема в том, что я хочу, чтобы пользователь мог вводить «выход» до конца, но мне также нужно сравнить свои данные со случайным числом. Теперь я думаю, как я могу попросить пользователя ввести int, но также проверить, не ввели ли они строку с именем exit?

Код должен позволить им продолжать играть, если они угадают это правильно.

пока у меня есть это.

import random

num = random.randint(1, 100)

guess = input("Enter your guess: ")

while guess != "exit":
    if guess.isdigit() == False:
        guess = input("Please enter valid number: ")
    elif guess > num:
        print("Lower!")
    elif guess < num:
        print("Higher!")
    elif guess == num:
        print("YOU GOT IT!!!!!")
        print("Setting new number.")
        num = random.randint(1, 100)
        guess = input("Enter number now: ")




print("Terminating game now.")

1 Ответ

0 голосов
/ 25 апреля 2018

Проблема с вашим кодом в том, что вам нужно вызвать 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...