Имейте в виду, что код после блока try-Кроме того, выполняется независимо от того, было сгенерировано исключение или нет.Если вызывается блок исключений, вы хотите, чтобы ваш код пропускал остальные операторы в цикле while и continue
на следующей итерации цикла, где пользователю снова предлагается ввести данные.Это может быть достигнуто с помощью ключевого слова continue
в блоке except
следующим образом:
try:
user_guess = int(input("Enter your guess: "))
except ValueError:
print("Please only use integers")
continue
Оператор continue
предписывает интерпретатору пропустить оставшиеся операторы в текущей итерации цикла.Затем поток управления может повторно войти в цикл или выйти, в зависимости от условия цикла.
Теперь, когда ваш код работает так, как он предназначен, вот как вы можете сделать его более кратким:
Во-первых, в Python есть удобная функция, которая позволяет вам писать условия типа not 1 <= user_guess <= 100
.Эти условия гораздо быстрее читаются, и вы можете заменить это в своем коде.
Во-вторых, функция start_here()
является избыточной.Вместо этого вы можете легко заменить play_game()
несколькими модификациями, например:
import random
def play_game():
print("Welcome to the guessing game!") #Modification here
random_number = random.randrange(1, 100)
correct = False
user_guess = True
while not correct:
try:
user_guess = int(input("Enter your guess: "))
except ValueError:
print("Please only use integers")
continue #Modification here
if not 1<=user_guess<=100: #Modification here
print("Please only enter numbers between 1 and 100!")
elif user_guess > random_number:
print("Too high, try again. ")
elif user_guess < random_number:
print("Too low, try again! ")
elif user_guess == random_number:
break
if user_guess == random_number:
replay = (input("Great! You guessed it! would you like to play again? y or n"))
if replay == "y":
play_game() #Modification here
else:
print("See ya later!")
play_game() #Modification here
, или полностью заменить функцию play_game()
циклом while, например:
import random
replay = 'y' #Modification here
while replay == 'y': #Modification here
print("Welcome to the guessing game!")
random_number = random.randrange(1, 100)
correct = False
user_guess = True
while not correct:
try:
user_guess = int(input("Enter your guess: "))
except ValueError:
print("Please only use integers")
continue
if not 1<=user_guess<=100 :
print("Please only enter numbers between 1 and 100!")
elif user_guess > random_number:
print("Too high, try again. ")
elif user_guess < random_number:
print("Too low, try again! ")
elif user_guess == random_number:
break
if user_guess == random_number: #Modification here
replay = input("Great! You guessed it! would you like to play again? y or n")
print("See ya later!") #Modification here