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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:45:18