我一直在尝试创建一个程序,告诉我吃什么的一些标准。首先,它问我准备时间应该是低、平均还是高。然后它问我想要什么类型的食物。如果我只想知道,它也可以给我一种类型的肉来吃。
import random
pasta = {"tonijn": 0, "carbonara": 1, 'pittige': 0}
speciaal = {'sucuk broden': 2, 'wraps': 1, 'ovenschotel': 2, 'bulgur met kip/gehakt': 1, 'bruschettas': 2,
'zelf pizza': 2, 'kip tomaat ovenschotel': 2}
fancy = {'biefstuk': 1, 'pizza bestellen': 0, 'doner bestellen': 0, "uiteten": 1}
pittig = {'pittige pasta': 0}
gezond = {'aardappel kip salade': 1, 'kipfilet, groente en bulgur': 0}
ongezond = {"soep en pannenkoeken": 0, 'shoarma': 1}
basis = {'avg': 1, "pasta": 0, 'curry': 1}
vlees = ['schnitzel', 'varkenslapje', 'hoouthakkersburger', 'cordon bleu', 'kip krokant']
tijd = str(input("Prep time? Short, medium or long ")).lower()
print('Options:')
print('Pasta - Speciaal - Fancy - Pittig - Gezond - Ongezond - Basis - Welk vlees')
type_eten = str(input("Your choice: ")).lower()
if type_eten == 'welk vlees':
print('The meat ur gonna eat: ', random.choice(vlees))
elif tijd == "short":
for food, value in type_eten:
mogelijke_opties = []
if value < 1:
mogelijke_opties.append(eten)
antwoord = random.choice(mogelijke_opties)
print("What ur gonna eat is: ", antwoord)
elif tijd == "medium":
for food, value in type_eten:
mogelijke_opties = []
if waarde < 2:
mogelijke_opties.append(eten)
antwoord = random.choice(mogelijke_opties)
print("Wat je gaat eten is: ", antwoord)
else:
print('What ur gonna eat is: ', random.choice(list(type_eten)))
当我试着运行这个程序时,它给了我错误。
AttributeError: 'str' object has no attribute 'items'
对于代码,
for food, value in type_eten.items():
我首先创建了一个字典,其中短准备时间的饭菜有一个0作为值,中等1和长2。然后它问用户heshe想要什么。如果他们只想知道他们要吃什么肉,它就会给他们。否则它就会检查准备时间,并创建一个新的列表,其中包含某个字典中的食物类型以及相应的准备时间。然后我想让它从这个新列表中选择一些东西。要做到这一点,我想我应该能够在'type_eten'后面添加.items(),所以它看起来像这样。
elif tijd == "short":
for food, value in type_eten.items():
mogelijke_opties = []
if value < 1:
mogelijke_opties.append(eten)
antwoord = random.choice(mogelijke_opties)
print("What ur gonna eat is: ", antwoord)
我不知道这是否能解决这个问题,但是经过对stackoverflow的研究,我认为应该可以。type_eten并没有给我这种可能性,但是我必须添加所有的字典名,这将使代码变得更长。有其他方法可以做到这一点吗?
你的基本问题是你混淆了内部变量名和外部数据。
if type_eten == 'welk vlees':
print('The meat ur gonna eat: ', random.choice(vlees))
elif tijd == "short":
for food, value in type_eten:
type_eten
是一个字符串。 仅仅因为你给一个内部变量起了这个名字,并没有 不 使它们对应起来;"pittig "是一个字符串。pittig
是一个dict。
相反,通过制作你实际要使用的字典来节省你的设计。
menu = {
"pasta": {"tonijn": 0, "carbonara": 1, 'pittige': 0},
"speciaal": {'sucuk broden': 2, 'wraps': 1, 'ovenschotel': 2,
'bulgur met kip/gehakt': 1, 'bruschettas': 2,
'zelf pizza': 2, 'kip tomaat ovenschotel': 2},
"fancy": {'biefstuk': 1, 'pizza bestellen': 0, 'doner bestellen': 0, "uiteten": 1},
... u.s.w.
}
...
for food, value in menu[type_eten].items():
你能从这里继续吗?