Python文字冒险游戏:while循环输入错误时如何返回初始路径选择环节
流程跳转实现方案
核心逻辑调整思路
将整套「路径选择-字母频次统计-战斗校验」的全流程纳入外层循环管控,当战斗环节出现输入错误、格式异常时,直接终止当前环节的重复提问,让外层循环自动回到最开始的路径选择节点;只有当战斗环节输入正确时,才跳出循环进入后续游戏流程。
改动细节
- 把原代码中独立在循环外的路径打印、路径输入收集、字母频次统计代码块,全部移入新增的外层
while True循环内部 - 移除原战斗环节的内层死循环,该环节仅做单次输入校验,不再在输入错误时反复弹出提问
- 战斗环节判断输入错误、捕获到输入异常时,不做任何停留在当前环节的逻辑,直接走完当前循环周期,触发外层循环从头运行
调整后完整代码
# 外层循环:承担流程失败后返回路径选择的跳转作用 while True: print("\n路径1 - bookkeeper", "\n路径2 - mississippi", "\n路径3 - sleeplessness", "\n路径4 - keenness", "\n路径5 - suddenness") path_way = input("输入你选择的对应单词,系统将统计每个字母的出现频次进行求和换算:") foreign_lang = [] occurences = [] for character in path_way: if character not in foreign_lang: foreign_lang.append(character) occurences.append(1) else: foreign_index = foreign_lang.index(character) occurences[foreign_index] = occurences[foreign_index] + 1 for index in range(len(foreign_lang)): print(foreign_lang[index], "-->", occurences[index]) print("根据统计得到的数值,进入战斗环节") # 战斗环节单次输入校验,无重复提问逻辑 try: act_3 = int(input("输入你将要应对的敌兵数量:")) if act_3 == 8: print("\n 你轻松击败8名敌兵,顺利通过当前路径!") # 输入校验通过:跳出所有循环,进入后续游戏流程 break else: # 数值输入错误:打印提示,等待外层循环跳转回路径选择 print("抱歉,敌兵数量远超你的应对能力,你被击倒后将重新回到路径选择环节") except: # 输入格式异常:打印提示,等待外层循环跳转回路径选择 print("抱歉,你擅自中断了任务流程,将重新回到路径选择环节")
运行逻辑说明
- 流程启动后首先打印所有可选路径,等待用户选择
- 战斗环节如果输入数值不对、输入了非数字内容,代码不会停留在该环节反复弹输入框,而是直接结束当前周期,回到循环开头重新展示路径列表
- 只有当输入的敌兵数量为正确值8时,才会打印通关提示,跳出循环进入后续游戏内容
注意:外层循环是实现流程回退的核心,不需要额外写复杂的跳转逻辑,只要不主动break,循环就会自动回到起始位置执行,刚好匹配文字冒险游戏的失败重试体验
内容的提问来源于stack exchange,提问作者Sai nathi
相关产品推荐
相关产品推荐

