gpt4 book ai didi

python - 通过用户输入搜索词典

转载 作者:行者123 更新时间:2023-12-04 10:03:30 26 4
gpt4 key购买 nike

我不是 Python 的特别初学者,但我也不是很有经验。

我正在做一个小项目,想知道什么是最好的行动方案。我想制作一个不同冷冻食品的食物字典,显示每个条目的营养值(value)。

Food_Catalog_Frozen.py 中的条目示例如下:

Burrito = {
"calories": 310,
"fats": 14,
"sodium": 330,
"carbohydrates": 35,
"sugars": 1,
"protein": 9,
}

然后我想单独制作一个“什么在做饭?”用户输入他们吃的所有东西并添加所有值的脚本。

在处理任何分析之前,我想看看我是否可以按原样打印出食物。以下是尝试打印出上述墨西哥卷饼营养信息的代码。
import Food_Catalog_Frozen as Frozen

print("What's cookin', good lookin'?\n")

STOP = False

while STOP == False:
food = input() # Enter Burrito
if food == "done":
STOP = True
else:
print(Frozen.food)

并抛出以下错误:
 print(Frozen.food)
AttributeError: module 'Food_Catalog_Frozen' has no attribute 'food'

主要问题是可变的食物,尽管在这个例子中现在被赋值为 Burrito,但字典仍然在搜索 Frozen.food 而不是 Frozen.Burrito 确实有效。似乎无法通过用户输入搜索字典。

如果有人能说出为什么这不起作用,或者是否有更好的方法来做到这一点,我们将不胜感激。谢谢你。

最佳答案

快速解决办法是做print(getattr(Frozen, food)) .这会起作用,因为 BurritoFrozen 的实际变量(属性) , 和 getattr用于获取属性。但是,我不推荐此解决方案。

最好的方法是重新考虑你的设计。您可以使用顶级 dict 代替与可能的食物类型相对应的单个变量。 :

foods = {
"Burrito": {
"calories": 310,
"fats": 14,
"sodium": 330,
"carbohydrates": 35,
"sugars": 1,
"protein": 9
},
...
}

那你就换 print(Frozen.food)print(Frozen.foods[food]) .如果你想确保输入的食物被注册,你可以包装 print里面下面 if :
if food in Frozen.foods:
print(Frozen.foods[food])

关于python - 通过用户输入搜索词典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61712574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com