如何从用户输入的某个字典中随机选择。

问题描述 投票:0回答:1

我一直在尝试创建一个程序,告诉我吃什么的一些标准。首先,它问我准备时间应该是低、平均还是高。然后它问我想要什么类型的食物。如果我只想知道,它也可以给我一种类型的肉来吃。

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并没有给我这种可能性,但是我必须添加所有的字典名,这将使代码变得更长。有其他方法可以做到这一点吗?

python
1个回答
1
投票

你的基本问题是你混淆了内部变量名和外部数据。

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():

你能从这里继续吗?

© www.soinside.com 2019 - 2024. All rights reserved.