[英]can't figure out why the program stops running (try/exception in a while loop)
出于某种原因,如果您添加一个我看不到或不了解程序中出现什么问题的字符串,代码会停止
import random
import math
def start_game():
pass
guesses = 1
random_number = (random.randint(1,10)) #limiting the number only from one to ten
try:
number = int(input("Welcome new player! Pick a number between 1 to 10: "))
except ValueError:
print("Please only use numbers between 1-10")
else:
while number != random_number :
try:
if random_number > number:
print("A little too low")
number = int(input("Pick a number between 1 to 10: "))
guesses = guesses+ 1
elif random_number < number:
print("A little too high")
number = int(input("Pick a number between 1 to 10: "))
guesses = guesses+ 1
except ValueError:
print("Sorry please only use numbers between 1 - 10")
else:
pass
number == random_number
guesses = guesses+ 1
print("Good job! you guessed the right number")
print ("The amount of guesses were {}".format(guesses))
start_game()
您在这里遇到的第一个问题是您甚至没有使用可以删除的数学模块。
第二个问题是您的第二个 except 子句正在结束程序。 它打印出这条消息print("Sorry please only use numbers between 1 - 10")
并且没有输入可以继续游戏。
第三个问题是,即使您没有输入任何字符串并正确玩游戏,每次迭代结束时的 else 语句也会猜测在您已经在 if 和 elif 子句中添加的 1 之上添加另一个 1 .
第四个问题乍一看不是问题,但了解代码在做什么对您来说很重要。 这里的代码无缘无故看起来非常复杂。 我在下面的代码中应用了相同的游戏。 您可以简化所有内容,例如我为您建议的以下代码。
import random
def validate_input_between(sentence: str, n: int) -> int:
while True:
try:
number = int(input(f"{sentence} {n}: "))
if 1 <= number <= n:
return number
raise ValueError()
except ValueError:
print(f"Input must be an integer between 1 and {n}.")
def start_game(n: int) -> None:
guesses = 1
random_number = random.randint(1, n)
num = validate_input_between("Enter a number between 1 and", n)
while True:
if random_number > num:
print("Your guess was too low.")
num = validate_input_between("Guess another number between 1 and", n)
guesses += 1
elif random_number < num:
print("Your guess was too high.")
num = validate_input_between("Guess another number between 1 and", n)
guesses += 1
else:
print("Good job! you guessed the right number!")
print(f"The amount of guesses were {guesses}.")
break
start_game(5)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.