Python:如果有库存,如何通过循环返回总价?

0 投票
6 回答
8635 浏览
提问于 2025-04-18 04:13

我刚开始学习Python,这是我在Codecademy上遇到的一个任务,我卡住了。compute_bill这个函数需要遍历“food(列表)”中的每个项目,只有当这个项目的库存数量大于零时,才把它的价格加到“total(变量)”里。接下来,如果这个项目有库存,并且价格已经加到总数里,就要把这个项目的库存数量减一。

shopping_list = ["banana", "orange", "apple"]

stock = {
    "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}

# Write your code below!

def compute_bill(food):
    total = 0
    for price in food:
        if stock[price] > 0:
            total += prices[price]
    return total

但是它返回了一个错误,提示说 *

调用compute_bill函数时,传入的列表包含1个苹果、3个梨、1个橙子和9个香蕉,结果是46.5,而正确的应该是34.5。

但是很明显,在库存字典里显示苹果有0个,梨有15个,橙子有32个,香蕉有6个。难道我还需要做一个列表或字典来放在compute_bill函数的“food”参数里吗?

任何回答都将非常感激。

6 个回答

0
shopping_list = ["banana", "orange", "apple"]

stock = {
    "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}

下面是代码:

def compute_bill(food):
   total = 0
   for item in food:
      if stock[item] > 0:
         total += prices[item]
         prices.update({item: prices[item]})
   return total
0

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个特定的功能时,发现它没有按照预期工作。这种情况很常见,很多人都会遇到。

解决这些问题的第一步是要仔细阅读错误信息。错误信息通常会告诉我们哪里出了问题,虽然有时候它们可能看起来很复杂,但其实它们是有用的线索。

此外,查阅相关的文档也是一个好主意。文档通常会详细说明如何使用某个功能,提供示例代码,帮助我们更好地理解如何解决问题。

如果自己解决不了,还可以去一些编程社区,比如StackOverflow,向其他人请教。在这些地方,很多有经验的程序员会乐意帮助你,分享他们的经验和解决方案。

总之,遇到问题时不要气馁,仔细分析错误信息,查阅文档,必要时寻求帮助,慢慢你就会变得更加熟练。

zozo = ["apple","pear","banana"]

stock = {
    "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}

# Write your code below!
def compute_bill(food):
    banana_number = food.count("banana")
    apple_number = food.count("apple")
    orange_number = food.count("orange")
    pear_number = food.count("pear")
    total = 0
    hash_table = {"apple":apple_number,"banana":banana_number,
                  "orange":orange_number,"pear":pear_number}
    for key in hash_table:
        if hash_table[key]>stock[key]:
            hash_table[key] = stock[key]
        else:
            hash_table[key] = hash_table[key]

        total += prices[key]*hash_table[key]
        stock[key] -= hash_table[key]

    return total
    return stock

if __name__ == '__main__':
    compute_bill(shopping_list)
0

你也可以通过简单地说来减少数值

stock[price]-=1
0

我想我有个解决办法,你需要知道列表中每个商品的数量。如果某个商品的数量超过了库存数量,你就需要把订单数量降低到库存数量的水平……没关系,下面是你可以开始使用并逐步改进的代码:

shopping_list = ["apple","pear","pear","pear","orange","banana","banana",
             "banana","banana","banana","banana","banana","banana","banana"]

stock = {
    "banana": 6,
    "apple": 0,
    "orange": 32,
    "pear": 15
}

prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
 }



def compute_bill(food):
    banana_number = food.count("banana")
    apple_number = food.count("apple")
    orange_number = food.count("orange")
    pear_number = food.count("pear")
    total = 0
    hash_table = {"apple":apple_number,"banana":banana_number,
                  "orange":orange_number,"pear":pear_number}
    for key in hash_table:
        if hash_table[key]>stock[key]:
            hash_table[key] = stock[key]
        else:
            hash_table[key] = hash_table[key]

        total += prices[key]*hash_table[key]
        stock[key] -= hash_table[key]

    print total
    print stock

if __name__ == '__main__':
    compute_bill(shopping_list)

希望我能帮到你 @Adrian

3

你没有减少库存的数量,这导致总价格多了3根香蕉(3*4=12)。你可以使用 dictionary.update() 方法来减少库存。

def compute_bill(food):
    total = 0
    for item in food:
        if stock[item] > 0:
            total += prices[item]
            stock.update({item: stock[item]-1})

    return total

撰写回答