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

数字猜谜游戏开发问题:输入校验循环无法正常终止

问题分析与解决

你的循环无法正常终止有两个核心问题:

  1. 判断逻辑错误:bet == str()是判断输入是否等于空字符串(str()会生成空串),这和你要验证「输入是数字」的需求完全不符。不管用户输入什么非空内容,这个条件都不成立,循环直接break;但如果用户输入空串,会无限打印提示,因为循环里没更新bet的值。
  2. 未在循环内更新输入:即使判断逻辑正确,当前代码也只会检查第一次输入的值,不会让用户重新输入,导致不符合条件时陷入死循环。

修复后的代码示例

方法1:用isdigit()判断正整数(适合只接受正整数赌注的场景)

saldo = "1000"  # 账户余额
while True:
    bet = input("kuinka paljon rahaa laitat peliin: ")
    if bet.isdigit():
        # 转换为整数后续使用
        bet = int(bet)
        break
    else:
        print("täytyy olla numero")  # 必须是数字

方法2:用try-except处理更灵活(支持小数、负数等场景)

saldo = "1000"
while True:
    bet = input("kuinka paljon rahaa laitat peliin: ")
    try:
        # 尝试转换为浮点数,根据需求也可以用int()
        bet = float(bet)
        break
    except ValueError:
        print("täytyy olla numero")

关键说明

  • 把input()放到循环内部,这样每次验证失败后,用户能重新输入新值。
  • 选择哪种判断方式取决于你的游戏是否允许小数赌注:如果只接受正整数,用isdigit();如果需要支持小数,用try-except更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:29:55