数字猜谜游戏开发问题:输入校验循环无法正常终止
问题分析与解决
你的循环无法正常终止有两个核心问题:
- 判断逻辑错误:
bet == str()是判断输入是否等于空字符串(str()会生成空串),这和你要验证「输入是数字」的需求完全不符。不管用户输入什么非空内容,这个条件都不成立,循环直接break;但如果用户输入空串,会无限打印提示,因为循环里没更新bet的值。 - 未在循环内更新输入:即使判断逻辑正确,当前代码也只会检查第一次输入的值,不会让用户重新输入,导致不符合条件时陷入死循环。
修复后的代码示例
方法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
相关产品推荐
相关产品推荐

