[英]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.