You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何猜数字游戏的冷热提示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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:42:36