python - 允许用户使用索引位置从列表中进行选择
问题描述
如果我没有正确地问这个问题,我很抱歉,这是我第一次在这里问。
我有一个目前可以运行的脚本,但我正在努力改进它。
我创建了一个星期几的字典,并根据每个值允许用户输入他们想在那一天吃哪顿饭。但是,目前我要求用户从列表中键入他们选择的选项,该选项必须完全匹配。例如“四川炒猪肉”——这里很容易打错。而不是管理错字,我想让用户更容易从列表中进行选择,例如通过从字典中选择一个键或从列表中选择一个索引位置 - 虽然我无法让其中任何一个工作.
我的代码现在看起来像这样:
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
但后来我真的想不出一种方法来遍历每个键,同时并行遍历一个列表。这甚至可能吗?
这让我想到只要求用户在列表中输入索引位置可能更容易,但我也无法弄清楚。
解决方案
首先,不要在迭代期间修改列表。
似乎您正在尝试为一周中的每一天匹配一顿饭。您可以迭代这些日子:
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!")
推荐阅读
- r - 使用第三个变量添加大小和颜色以使用 plotly 进行绘图
- apache-spark - 如何避免在 Spark DataFrames 中多次执行相同的转换?
- asp.net - ASP.NET GridView Bootstrap 3 手风琴
- c# - 如何正确创建实例以使用方法?
- php - 根据数组中的值取消设置特定会话项
- docker - 如何在 Docker 容器中使用 Kerberos 运行 Ansible?
- javascript - PHP isset 在使用引导模式确认后无法处理表单提交
- python - 机器学习训练图像大小调整
- tensorflow - 上手 TensorFlow
- angular - Firebase 身份验证 - 使用 GoogleAuthProvider 重新验证用户时遇到问题