首页 > 解决方案 > 将列表匹配到 dict 然后循环、存储和显示

问题描述

我试图从列表中提取一个值S并将其与字典匹配,Cost我只需要帮助掌握它的语法。它应该接受你的输入,检查它CostDict并输出V然后它会检查它是否可以购买5次,如果可以它会随机购买其中的1到5次,检查是否有剩余的钱并继续购买其中的 1 到 5 个或仅购买 1 个。但是我在这方面遇到了错误,这让我很困惑。

from collections import Counter


i = input('Taco, Burrito or Nacho: ')
moneyi = input('How much Money to Spend: ')
money = float(moneyi)

S = ["Taco", "Burrito", "Nacho"]
V = [6, 4, 2]
CostDict = {Li: Prop for (Li, Prop) in zip(S, V)}
cost = CostDict[i]
print("Costs:" + str(cost) + " per")
if (cost * 5) < money:
    purchase_ls = []
    while money >= min(cost):
        b = randint(1, 5)
        bcost = (CostDic[S] * b)
        bvalue = (ValueDic[S] * b)
        for aProp in S:
            if money < int(cost[S.index(aProp)]):
                continue
            purchase_ls.append(aProp)
            vcost = int(bcost[S.index(aProp)])
            money = money - bcost
            print("item: {} cost: {} money you have: {} ".format(aProp, vcost, money))
            if money <= 0:
                break
    print(dict(Counter(purchase_ls)))
else:
    purchase_ls = []
    while money >= min(cost):
        bcost = (CostDic[S])
        bvalue = (ValueDic[S])
        for aProp in S:
            if money < int(cost[S.index(aProp)]):
                continue
            purchase_ls.append(aProp)
            vcost = int(bcost[S.index(aProp)])
            money = money - bcost
            print("item: {} cost: {} money you have: {} ".format(aProp, vcost, money))
            if money <= 0:
                break
    print(dict(Counter(purchase_ls)))

标签: pythonpython-3.x

解决方案


推荐阅读