如何检查字符串是否含空格?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
相关产品推荐
相关产品推荐

