Python脚本运行后空白无响应,求生命系统问答游戏修复方案
问题分析与修复方案
导致屏幕空白的核心原因
- 未执行主函数:你定义了
main()函数,但脚本末尾没有调用它,导致代码完全未运行。 - 无限循环阻塞:
main()开头的while True循环会无限执行(初始生命值为3,永远不会触发break),卡死在循环中,后续输入和逻辑永远无法执行。
其他功能缺陷
- 启动输入逻辑错误:若用户输入作弊选项,会同时触发
else和后续独立if,导致生命值被重复扣除(直接变为-3)。 - 答错未扣血:当前代码仅打印提示,未实现生命值扣除逻辑。
- 生命值归0后未终止:即使生命值耗尽,后续题目仍会继续。
- 缺少主动退出功能:未处理用户立即结束游戏的输入需求。
修复后的完整代码
import time livesRemaining = 3 def main(): global livesRemaining # 启动界面输入处理 q = input("欢迎来到古希腊神祇知识测试!严禁查资料!\n要开始测试请输入:Ok i wont search anything up.\n不想开始请输入:i dont care i will search the answers up.\n输入quit可直接退出游戏:") # 处理启动选项 if q.strip() == "Ok i wont search anything up.": print("好的,祝你好运!") elif q.strip() == "i dont care i will search the answers up.": print("你个作弊者!这轮游戏你不能玩了!") livesRemaining = 0 elif q.strip().lower() == "quit": print("游戏已结束,再见!") return else: print("再见,下次再见!") livesRemaining = 0 # 生命值为0时直接终止 if livesRemaining == 0: return time.sleep(2) # 第一题 q1 = input("希腊的睡眠之神是谁?") if q1.strip().lower() == "quit": print("游戏已结束,再见!") return q1 = q1.lower() if q1 == "hypnos": print("恭喜你,小学社会课没白上!") else: print("哈哈,居然没认真听小学社会课!") livesRemaining -= 1 print(f"剩余生命值:{livesRemaining}") if livesRemaining == 0: print("生命值耗尽,游戏结束!") return time.sleep(2) # 第二题 q2 = input("希腊的黑夜女神叫什么名字?") if q2.strip().lower() == "quit": print("游戏已结束,再见!") return q2 = q2.lower() if q2 == "nyx": print("恭喜你,小学社会课没白上!") else: print("哈哈,居然没认真听小学社会课!") livesRemaining -= 1 print(f"剩余生命值:{livesRemaining}") if livesRemaining == 0: print("生命值耗尽,游戏结束!") return # 全部题目完成提示 print("测试完成!你的剩余生命值:", livesRemaining) # 调用主函数启动游戏 if __name__ == "__main__": main()
关键修复说明
- 添加函数执行入口:通过
if __name__ == "__main__": main()确保主函数被调用。 - 移除阻塞循环:删除了无意义的
while True循环,改为每次扣血后检查生命值,及时终止游戏。 - 修复启动逻辑:用
elif替代独立if,避免重复扣血;新增quit退出选项。 - 实现扣血机制:答错题目扣除1点生命值,打印剩余值,归0时立即结束游戏。
- 增加全局退出:每个输入环节都检查
quit指令,支持用户随时终止游戏。
内容的提问来源于stack exchange,提问作者gio
相关产品推荐
相关产品推荐

