Python猜数字游戏循环退出异常求助:输入n无法终止游戏
随机数猜谜游戏退出循环问题排查
问题描述
编写随机数猜谜函数,需实现:返回猜测次数、提示猜测结果(正确/过高/过低)、询问用户是否继续游玩。目前前两项功能正常,但输入n无法终止游戏,会持续提示输入错误。
用户代码
#random number guessing game import random def generate_random (min,max): return random.randint (min,max) #generate_random (1,100) star_range=1 end_range=100 #targetnumber=generate_random(start_range,end_range) #print (targetnumber) def main(): targetnumber=generate_random(star_range,end_range) number_of_guesses =0 #guarda o numero de tentativas do jogador print ("Guess a number between 0 e 100.\n") while True: number_of_guesses +=1 guess = int(input("Guess #" + str(number_of_guesses) + ": ")) if guess > targetnumber: print(" Too High, try again.") elif guess < targetnumber: print (" Too low, try aain") else: print (" Correct") print (" Congratulations. you got it in",number_of_guesses,"guesses.") break playagain=input("\n whould you like to play again? (y/n): ").lower() while playagain != "y" or playagain != "n": print ("Please print y to continue or n to exit") playagain=input("\n whould you like to play again? (y/n): ").lower() if playagain == "y": continue else: break
错误现象
是否要再玩一次?(y/n): n
请输入y继续或n退出
是否要再玩一次?(y/n):
问题分析与修正
核心错误:循环条件逻辑错误
while playagain != "y" or playagain != "n" 这个条件永远为真。因为不管输入是y还是n,总有一个不等式成立(比如输入n时,playagain != "y"为真,整个or条件就为真),导致循环无法退出。应将or改为and,只有当输入既不是y也不是n时才进入循环。
其他问题与修正
- 拼写错误:
star_range→start_range(变量名拼写错误,会导致函数调用失败)try aain→try againwhould→would
- 流程逻辑错误:验证输入的循环内不需要
continue和break,只需在输入合法后跳出循环,再判断是否重新开始游戏。 - 缺少函数调用:没有执行
main(),程序无法启动。
修正后的完整代码
# random number guessing game import random def generate_random(min_val, max_val): return random.randint(min_val, max_val) start_range = 1 end_range = 100 def main(): target_number = generate_random(start_range, end_range) number_of_guesses = 0 # 记录玩家猜测次数 print("Guess a number between 1 and 100.\n") while True: number_of_guesses += 1 guess = int(input(f"Guess #{number_of_guesses}: ")) if guess > target_number: print(" Too High, try again.") elif guess < target_number: print(" Too low, try again.") else: print(" Correct") print(f" Congratulations. You got it in {number_of_guesses} guesses.") break # 询问是否继续游玩 while True: play_again = input("\nWould you like to play again? (y/n): ").lower() if play_again == "y" or play_again == "n": break print("Please enter y to continue or n to exit.") if play_again == "y": main() # 启动游戏 main()
内容的提问来源于stack exchange,提问作者Vitor Silva
相关产品推荐
相关产品推荐

