首页 > 解决方案 > 允许用户使用索引位置从列表中进行选择

问题描述

如果我没有正确地问这个问题,我很抱歉,这是我第一次在这里问。

我有一个目前可以运行的脚本,但我正在努力改进它。

我创建了一个星期几的字典,并根据每个值允许用户输入他们想在那一天吃哪顿饭。但是,目前我要求用户从列表中键入他们选择的选项,该选项必须完全匹配。例如“四川炒猪肉”——这里很容易打错。而不是管理错字,我想让用户更容易从列表中进行选择,例如通过从字典中选择一个键或从列表中选择一个索引位置 - 虽然我无法让其中任何一个工作.

我的代码现在看起来像这样:

for d in week_meals:
    try:
        answer = input(f"What would you like to eat on {d}? options are {week_meals_list}")
        week_meals_list.remove(answer)
        week_meals[d] = answer
    except ValueError:
        print("That isn't an option!")
        answer = input(f"What would you like to eat on {d}? options are {week_meals_list} type {week_meals_list.index}")
        week_meals_list.remove(answer)
        week_meals[d] = answer

我试图通过执行以下操作来创建字典,但我无法弄清楚如何将每个项目的键设置为递增 1:

week_meals_dict = {}

for k in range(int(days)):
        week_meals_dict[k] = None

但后来我真的想不出一种方法来遍历每个键,同时并行遍历一个列表。这甚至可能吗?

这让我想到只要求用户在列表中输入索引位置可能更容易,但我也无法弄清楚。

标签: pythonlistdictionaryinput

解决方案


首先,不要在迭代期间修改列表

似乎您正在尝试为一周中的每一天匹配一顿饭。您可以迭代这些日子:

week_meals_options = {1: "Chicken", 2: "Soup"} # Your dict containing choices mapped to the meal options
week_meals = {}
for day in week_days:
    while True:
        answer = input(f"What would you like to eat on {day}? options are {week_meals_options.keys()}")
        if answer in week_meals_options:
            week_meals[d] = week_meals_options.pop(answer) # Remove the option from the dict, and assign it to the day
            break
        else:
            print("That isn't an option!")

推荐阅读