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

如何检查字符串是否含空格?Hangman游戏输入校验异常排查

问题分析

你的代码存在缩进错误、逻辑顺序颠倒的问题,导致输入验证和游戏逻辑混在一起,程序无法正确响应输入:

  • 缩进错误:while语句前的多余缩进会引发语法或逻辑异常
  • 逻辑顺序混乱:输入验证的while循环里混入了猜字母的判断逻辑,当输入包含空格时,程序没有触发重新输入分支,直接进入无效的猜字母判断,进而陷入死循环
  • 输入处理不统一:重新输入时未转小写,可能导致后续字母匹配出错
修复后的代码示例
import re

# 假设已提前定义游戏核心变量(示例值)
word = "hangman"
HiddenWord = "_" * len(word)

# 初始输入处理:去除首尾空格+转小写
Player1 = input("It's Player 1's turn> ").strip().lower()

# 单独循环做输入合法性验证:非空且不含空格
while Player1 == "" or " " in Player1:
    Player1 = input("无效输入!不能留空或包含空格,请输入单个字母> ").strip().lower()

# 输入合法后,再处理猜字母逻辑
if Player1 in word:
    for match in re.finditer(Player1, word):
        start = match.start()
        end = match.end()
        HiddenWord = HiddenWord[:start] + Player1 + HiddenWord[end:]
    guess_1 = True
else:
    guess_1 = False

# 可选:输出当前游戏状态
print(f"当前隐藏单词:{HiddenWord}")
print(f"猜测是否正确:{guess_1}")
关键修复点
  • 分离逻辑模块:先通过while循环确保输入完全合法,再执行猜字母的游戏逻辑,避免流程混乱
  • 统一输入处理:所有输入都用.strip()清除首尾空格、.lower()统一转小写,规避空格干扰和大小写不匹配问题
  • 修正缩进规范:确保代码块缩进一致,避免语法错误
  • 明确错误提示:直接告知用户输入无效的原因,引导正确操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:48:31