为何猜数字游戏的冷热提示elif语句需到程序结束才输出?
问题分析与修复
你的问题根本原因不是elif语句,而是所有判断逻辑都写在了for循环的外部。循环里只是重复接收用户输入并覆盖guess变量,直到10次循环全部跑完,才会执行后面的所有提示代码,自然看不到即时反馈。
修复后的代码
import random print("Welcome to the number guessing game!") print("") guesses_allowed = 10 number = random.randint(1, 50) for i in range(guesses_allowed): guess = int(input("Please guess a number between 1 and 50: ")) # 即时判断是否猜对 if guess == number: print("Congrats you guessed correctly") break # 猜对后直接结束游戏 # 高低提示 elif guess < number: print("Number is higher.") else: print("Number is lower.") # 冷热提示 diff = abs(guess - number) if diff <= 10: print("You're warm!") elif diff <= 20: print("You're getting warmer.") elif diff <= 30: print("You're cold.") else: print("You're freezing.") # 循环结束后检查是否用光次数 if i == guesses_allowed - 1: print("Sorry, you've run out of guesses")
关键修改说明
- 缩进调整:把所有判断提示的代码缩进,放到
for循环内部,这样每次输入猜测后立即执行判断并输出提示。 - 添加break:猜对后用
break跳出循环,避免继续消耗猜测次数。 - 优化diff变量:计算一次差值重复使用,避免多次调用
abs(guess - number),让代码更简洁。
内容的提问来源于stack exchange,提问作者deafening_radio
相关产品推荐
相关产品推荐

