Найти - Пользователи
Полная версия: Помощь с задачкой
Начало » Python для новичков » Помощь с задачкой
1 2
hewonders
 def compute_bill(food):
    total = 0
    for item in food:
        if (stock[item]) > 0:
            total = (prices[item]) + total
        return (stock[item]) - 1
    return total
compute_bill("pear")
print(item)
ошибка
Oops, try again. Your code looks a bit off. See the console window for the error. Check the Hint if you need help!
в консоли:
Traceback (most recent call last):
File “python”, line 25, in <module>
File “python”, line 21, in compute_bill
KeyError: ‘p’

Может я не так понял саму задачу?

Есть дефолтный код:
 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 item in food:
        total = prices[item] + total
    return total

Задача 1:
Make the following changes to your compute_bill function:

While you loop through each item of food, only add the price of the item to total if the item's stock count is greater than zero.

В моём понимании код выше меняется на:

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

Вторая задача со сведенным кодом первой задачи:
If the item is in stock and after you add the price to the total, subtract one from the item's stock count.


 def compute_bill(food):
    total = 0
    for item in food:
        if (stock[item]) > 0:
        total = prices[item] + total
        (stock[item]) -= 1
    return total
print(item)
compute_bill("banana")

консольная ошибка:
 File "python", line 22
    total = prices[item] + total
        ^
IndentationError: expected an indented block

блииин я тупооой
py.user.next
codeacademy.com. stocking out
  
def compute_bill(food):
    total = 0
    for item in food:
        if stock[item] > 0:
            total += prices[item]
            stock[item] -= 1
    return total
hewonders
Огооо)))
Помогло.
А как понять
 total += prices[item]
?
Это тоже самое что и
  total = prices[item] + total
?

Почему не прокатило
 total = prices[item] + total
? Разве это некорректно?
py.user.next
hewonders
 total += prices[item]

  
total = total + prices[item]

hewonders
Разве это некорректно?
Корректно, ты просто с отступами пропёрся.
hewonders
PS Нашёл решение на другом сайте как раз по логике, которой я следовал:

 def compute_bill(food):
    total = 0
    for item in food:
        if stock[item] > 0:
            total = total + prices[item]
            stock[item] -= 1
        else:
            total = total 
return total

Собственно. Я ранее и указывал
 total = total + prices[item]
Они только добавили ещё
 else:
            total = total
И тогда код выполняется. Только мне не ясна логика(
hewonders
Если в стоке есть фрукт и он больше нуля, тогда выполняется условие:
 total = total + prices[item]
stock[item] -= 1
В противном случае
total = total
то есть если нужного объекта нет в инвентаре, то тогда total, которому мы присвоили значение “0”, будет равен нулю будет равен самому себе. Но почему ошибка не ссылалась на это…. блин как сложно))
hewonders
Ладно, оставлю как подсказали!! Спасибо всем за помощь))
py.user.next
hewonders
Они только добавили ещё
  
total = total
Кто добавлял такое, тот не знает нифига. Масло масляное.
alalekseev
hewonders
shopping_list =
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 item in food:
if stock(item) > 0:
total = prices + total
return stock - 1
return total
Ты точно уверен, что правильно понял суть задачи?
У тебя в shopping_list есть список продуктов, каждый из этих продуктов необходимо “купить”. При этом, при попытке “купить” каждый из продуктов, должно выполняться условие из задачи: если продукт есть в наличие (то есть, его кол-во > 0, не имеет же смысл покупать то, чего нет в наличие, верно?), то его стоимость приплюсовывается к общему чеку за покупку (total), а количество соотв. продукта уменьшается на единицу.
Строка "return stock - 1" в твоём цикле - как думаешь, как отработает твой цикл, если в функцию подать сразу несколько продуктов, а не один? Что он вернет? Уверен, что при такой реализации общее кол-во продукта в наличие уменьшиться на единицу после покупки?

Я бы сделал так:
 shopping_list = ["banana", "orange", "apple"]
stock = {
    "banana": 3,
    "apple": 0,
    "orange": 32,
    "pear": 15
}
    
prices = {
    "banana": 4,
    "apple": 2,
    "orange": 1.5,
    "pear": 3
}
# Write your code below!
def compute_bill(foods):
    total = 0
    for i in foods:
        if stock[i] > 0:
            total += prices[i]
            stock[i] -= 1
    return total
print(compute_bill(shopping_list))
print(stock)

Вывод:
5.5
{'apple': 0, 'orange': 31, 'pear': 15, 'banana': 2}

Блин, не заметил, что есть вторая страница обсуждения, на которой уже все решили *facepalm*
ZerG
Та уже писали в предложениях что форум неправильно работает - но чото никто не пофиксил!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB