Python开发Magic 8 Ball游戏如何实现空白问题输入校验
魔法8球空白输入重输功能实现
你现有代码存在两处逻辑错误,直接导致空白输入重输的需求无法实现:
- 仅在循环启动前读取一次问题输入,没有给空白输入场景预留重新输入的逻辑
- while判断条件写反:当前逻辑是输入非空就进入循环、输入空白直接跳过全部流程,且进入循环后没有重新读取输入的步骤,会触发无限重复生成回答的死循环。
把输入步骤挪到循环内部,加上空白判断即可实现需求,注意要兼容用户只输入空格、制表符的场景,不要只判断长度为0的空字符串。
修正后可直接运行的参考代码:
import time # 前置依赖:你自行实现的cls()、Generating()、randomchoice()方法 def main(): cls() name = input("What is your name? ") while True: question = input("\u001b[33;1mWhat is your question that you desire to answer to? ") # 清除首尾所有空白字符后判断是否为空,覆盖全空格、换行等无效输入 if not question.strip(): print("问题不能为空,请重新输入。") continue # 输入合法,走后续回答流程 time.sleep(1) Generating() time.sleep(1) print(f"Ahh yes {name} I have a response") time.sleep(1) randomchoice() # 单轮问答结束后需要退出程序就打开下面的break注释,需要支持连续提问就保留循环 # break
关键实现说明:
- 用无条件循环持续接收输入,只有输入通过非空校验才会执行后续回答逻辑
- 调用字符串内置的
strip()方法处理首尾空白,避免用户输入纯空格绕过校验 - 检测到无效空白输入时打印提示,直接进入下一轮循环重新展示输入提示,不需要额外维护复杂的状态变量。
内容的提问来源于stack exchange,提问作者Leo Glass
相关产品推荐
相关产品推荐

