Я нахожусь в процессе изучения Python, и одним из упражнений, которое я пытался сделать, было создание игры «угадай число». Я сделал очень простой, но теперь я хочу пойти немного дальше и установить некоторые границы для входов, чтобы программа была защищена от ошибок. Вот мой код:
# Guess the number game.
import random
print('Hello. What is your name?')
yourName = input() # collects user's name
solution = random.randint(1,20)
print('Well, ' + str(yourName) + ', I am thinking of a number between 1 and 20.')
acceptable = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20'] # acceptable answers
def game():
for attempts in range(1,6):
print('Take a guess. You have ' + str(6 - attempts) + ' attempt(s) remaining')
# try:
guess = (input())
while guess:
if guess != acceptable:
print("That is not a valid answer!")
guess = (input())
else:
moveon()
def moveon():
while guess != solution:
if guess < solution:
print('Your guess is too low. Try again.')
elif guess > solution:
print('Your guess is too high. Try again.')
else:
endofgame()
'''
except ValueError:
print('Please enter a guess that is a number.')
attempts + 1 == attempts
'''
def endofgame():
if guess == solution:
print('You guessed it! It took you ' + str(attempts) + ' attempt(s)')
playAgain()
else:
print('Game over! The number I was thinking of was ' + str(solution))
playAgain()
# Option to play again with a new number
def playAgain():
global solution
print('Play again? Y/N')
playAgain = input()
if playAgain == 'Y':
print('Okay, ' + str(yourName) + ', I have another number between 1 and 20.')
solution = random.randint(1,20)
game()
else: print('Thanks for playing!')
# Start game
game()
Итак, я хочу убедиться, что, когда пользователю предлагается ввести число от 1 до 20, ввод ответов типа «22», «кофе» или «14,5» будет недействительным, и предложить им повторить попытку. и введите правильный ответ. Однако, когда я запускаю эту программу прямо сейчас, любой введенный ответ возвращается как недействительный. Как мне сделать так, чтобы только одни ответы были приняты, а другие нет? Я подозреваю, что есть другой способ, чем использование списка, о котором я еще не знаю. Заранее спасибо!