Как найти ошибку в коде при проверке пользовательского ввода в python? - PullRequest
0 голосов
/ 19 сентября 2019

Я только начал копаться в питоне.Как всегда, когда пытаюсь выучить новый язык, я начинаю с небольшой игры.Но на этот раз я не вижу, что пошло не так.Игра проста.Угадайте число от 1 до 100. Но прежде чем перейти к реальной игровой логике, я хочу убедиться, что пользователь угадал число.(вместо числа с плавающей запятой или строки).И число должно быть в диапазоне от 1 до 100.

По некоторым причинам, мой подход всегда говорит мне, что мое число не находится в диапазоне.И я не могу понять, почему.Так что любая помощь приветствуется.Спасибо.

from random import randint as rInt

game = {"winNumber": rInt(1,100), "guessedNumber": 0, "tries": 8, "triesLeft": 8}

def checkInput(uInput):
    """Checks user Inputs if they are valid numbers. Then a second check if the number is in between 1 and 100. Returns TRUE if successfull"""
    try:
        int(uInput)
    except ValueError:
        print("This is not a number!")
    else:
        if uInput not in range(1, 100):
            print("With this number you will definitly loose the game, because it is not between 1 and 100")
        else:
            game["guessedNumber"] = uInput
            return True


while game["triesLeft"] > 0:
    riskyInput = input("Please enter a number between 1 and 100: ")
    if checkInput(riskyInput) == True:
        print (f'The Validator worked. The Player guessed number is: {game["guessedNumber"]}')
    else:
        print ("Something has gone wrong with the validation. We try again")
        continue

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

Блок try преобразует uInput в int, но выбрасывает его.В else блоке uInput остается строка.

int(uInput) должно быть uInput = int(uInput)

0 голосов
/ 19 сентября 2019

uInput по-прежнему является строкой, когда вы проверяете, находится ли она в диапазоне.

Просто преобразуйте ее в int: if int(uInput) not in range(1, 100):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...