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

Python游戏中while循环与变量导致输出空白问题排查

解决选择'keep'/'change'后仅输出空白行的问题

嘿,我一眼就瞅出你代码里的问题啦——你最后打印的变量要么没正确赋值,要么就是变量名搞错了,才导致输出空白!咱们一步步拆解:

核心问题分析

  1. userValue变量无有效赋值:在你贴的代码片段里,完全看不到userValue的定义和赋值逻辑。如果这个变量没被赋予用户选中箱子的对应奖金数值,那打印它自然就是空白(或者如果没定义会直接报错,但你说输出空白,大概率是它被赋值为空字符串/空值了)。
  2. remainder变量是笔误:选择change时你打印的remainder,在这段代码里根本没出现过!你要操作的剩余箱子是remainderCases[0],对应的应该是这个箱子的奖金数值,而不是一个没定义的remainder变量。

修复后的代码示例

假设你用一个字典来存储每个箱子对应的奖金数值(比如case_values),修改后的代码应该是这样的:

# 先定义箱子和奖金的对应关系(示例数据,你可以换成自己的游戏数值)
case_values = {1: 10, 2: 20, 3: 50, 4: 100, 5: 1000, 6: 10000}

if len(remainderCases) == finalRoundRemainder:
    print(f"Only 2 cases left - the case you chose at the beginning of the game, Case #{user},")
    print(f"and Case #{remainderCases[0]}. The result will be your winnings.")
    keepOrChange = input("Would you like to 'keep' or 'change' your case: ")
    while keepOrChange not in ["keep", "change"]:
        keepOrChange = input(f"The value '{keepOrChange}' is invalid. Would you like to keep or change your case (enter 'keep' or 'change'): ")
    if keepOrChange == "keep":
        # 打印用户初始选择箱子的奖金
        print(f"Congratulations! Your winnings are: ${case_values[user]}")
    else:
        # 打印剩余箱子的奖金
        print(f"Congratulations! Your winnings are: ${case_values[remainderCases[0]]}")
else:
    print("")
    print("Next case!")

额外优化提示

  • 我把字符串拼接换成了f-string,可读性更强,也不容易出错;
  • 把循环条件改成了keepOrChange not in ["keep", "change"],代码更简洁;
  • 增加了友好的获奖提示,不会再输出冷冰冰的空白啦。

如果你的代码里已经有userValue的赋值逻辑,那一定要检查它是不是正确指向了case_values[user],要是赋值错了也会导致空白输出哦!

内容的提问来源于stack exchange,提问作者ProgrammerNoob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:10:05