Java遍历一维数组与二维数组:实现问答交互功能
嘿,我来帮你搞定这个交互式问卷的问题!根据你的需求,我整理了一个完整的Python实现方案,不仅能按顺序展示三个问题和对应选项,还能处理用户输入、验证有效性,一步步推进到下一个问题。
解决方案:交互式问卷实现
完整代码示例
# 定义问题数组(一维),按需求顺序排列 questions = [ "Favourite Sweet", "Favourite subject at Hogwarts", "Dream Vacation" ] # 定义对应选项的二维数组,每个子列表对应一个问题的选项,数量匹配需求 options = [ # 8种糖果选项 ["Chocolate Frog", "Bertie Bott's Every Flavour Beans", "Cauldron Cakes", "Licorice Wands", "Fizzing Whizbees", "Drooble's Best Blowing Gum", "Pepper Imps", "Acid Pops"], # 10门霍格沃茨科目选项 ["Charms", "Defence Against the Dark Arts", "Herbology", "History of Magic", "Potions", "Transfiguration", "Astronomy", "Divination", "Care of Magical Creatures", "Arithmancy"], # 7个度假地选项 ["Hogsmeade Village", "The Black Lake", "Diagon Alley", "Gringotts Wizarding Bank", "Hogwarts Castle Grounds", "The Forbidden Forest", "Ministry of Magic"] ] # 遍历每个问题,依次展示并获取输入 for q_idx in range(len(questions)): current_question = questions[q_idx] current_options = options[q_idx] # 打印问题标题 print(f"\n=== {current_question} ===") # 打印带编号的选项(从1开始) for opt_num, option in enumerate(current_options, start=1): print(f"{opt_num}. {option}") # 输入验证:确保用户输入有效编号 while True: user_input = input("请输入你选择的选项编号:") if user_input.isdigit(): choice_num = int(user_input) if 1 <= choice_num <= len(current_options): break else: print(f"无效输入!请输入1到{len(current_options)}之间的数字") else: print("无效输入!请输入数字编号") # 反馈用户选择,然后进入下一个问题 selected_option = current_options[choice_num - 1] print(f"\n你选择了:{selected_option}\n") print("问卷完成!感谢参与😊")
代码解释
- 数组定义:
questions一维数组严格按你要求的顺序存放三个问题;options二维数组的每个子列表对应前一个数组中同索引的问题,选项数量完全匹配(8/10/7)。 - 循环遍历:通过
for循环遍历问题索引,自动关联对应选项,避免重复写冗余代码。 - 选项编号:用
enumerate(..., start=1)让选项从1开始编号,完全符合你要的1-8、1-10、1-7格式。 - 输入验证:添加了循环验证逻辑,防止用户输入非数字或超出范围的编号,让程序更健壮。
常见问题排查
如果你的原有代码出现问题,大概率是这几个原因:
- 索引不匹配:二维选项数组的顺序和一维问题数组不一致,导致问题和选项对应错误;
- 编号起始错误:选项从0开始编号,不符合需求的1开头格式;
- 无循环逻辑:手动写每个问题的打印/输入代码,导致重复且容易出错;
- 输入处理缺失:没有获取用户输入的逻辑,或者输入后没有推进到下一个问题的触发机制。
内容的提问来源于stack exchange,提问作者LLgood
相关产品推荐
相关产品推荐

