Python脚本实现跳过用户输入后后续重新询问的方法
嘿,刚接触Python就能动手写工作脚本超棒的!针对你要实现的「跳过问题后末尾补问」的需求,我给你整理了清晰的实现思路和代码示例,完全贴合你的场景~
核心实现思路
- 先把所有要问的问题统一管理起来,方便后续维护
- 第一轮提问时,允许用户选择跳过,把跳过的问题单独存起来
- 第一轮结束后,专门对跳过的问题进行补问,这次可以强制用户必须给出是/否的回答(避免再次跳过)
- 最后把所有回答存在字典里,方便后续脚本调用
完整代码示例
# 定义允许的输入选项,统一管理更规范 yes_options = ('yes', 'y') no_options = ('no', 'n') skip_options = ('skip', 's') # 把所有需要提问的问题存在列表里,后续加新问题直接追加就行 questions = [ {'key': 'power', 'prompt': "Does the site have power? (Yes/No/Skip): "}, {'key': 'internet', 'prompt': "Is the internet working? (Yes/No/Skip): "}, # 这里可以继续添加更多工作需要的问题 ] # 存储最终的回答结果,后续脚本直接用这个字典取值 answers = {} # 存储第一轮被跳过的问题,留着末尾补问 skipped_questions = [] # 第一轮提问:允许用户跳过 print("=== 开始提问 ===") for q in questions: while True: # 注意Python3里用input(),如果是Python2就换回raw_input() user_input = input(q['prompt']).strip().lower() if user_input in yes_options: answers[q['key']] = 'yes' break elif user_input in no_options: answers[q['key']] = 'no' break elif user_input in skip_options: skipped_questions.append(q) print(f"已跳过该问题,稍后会重新询问") break else: print("输入无效哦,请输入 Yes/No/Skip(或缩写y/n/s)") # 处理跳过的问题:末尾补问,这次不允许跳过 if skipped_questions: print("\n=== 请补回答以下未完成的问题 ===") for q in skipped_questions: while True: user_input = input(f"[{q['key']}] {q['prompt']}(不可跳过)").strip().lower() if user_input in yes_options: answers[q['key']] = 'yes' break elif user_input in no_options: answers[q['key']] = 'no' break else: print("输入无效,请输入 Yes/No(或缩写y/n)") # 输出最终结果,方便你后续调用 print("\n=== 所有回答已收集完成 ===") for question_key, answer in answers.items(): print(f"{question_key}: {answer}")
关键细节说明
- 把问题存在列表里的好处是扩展性极强,以后要加新问题直接往
questions里加一行就行,不用改核心逻辑 - 用字典存储回答,后续脚本需要调用时,直接通过
answers['power']就能拿到对应问题的回答 - 补问环节强制用户必须回答,避免出现遗漏的问题(如果确实需要允许再次跳过,可以把补问里的判断逻辑改成和第一轮一样)
内容的提问来源于stack exchange,提问作者Trap
相关产品推荐
相关产品推荐

