Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 29, 2016 11:12:14

hewonders
Зарегистрирован: 2016-08-12
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с задачкой

 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

блииин я тупооой

Отредактировано hewonders (Авг. 29, 2016 11:29:30)

Офлайн

#2 Авг. 29, 2016 11:42:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь с задачкой

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



Офлайн

#3 Авг. 29, 2016 11:50:16

hewonders
Зарегистрирован: 2016-08-12
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с задачкой

Огооо)))
Помогло.
А как понять

 total += prices[item]
?
Это тоже самое что и
  total = prices[item] + total
?

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

Отредактировано hewonders (Авг. 29, 2016 11:50:49)

Офлайн

#4 Авг. 29, 2016 11:53:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь с задачкой

hewonders
 total += prices[item]

  
total = total + prices[item]

hewonders
Разве это некорректно?
Корректно, ты просто с отступами пропёрся.



Отредактировано py.user.next (Авг. 29, 2016 11:54:06)

Офлайн

#5 Авг. 29, 2016 11:55:19

hewonders
Зарегистрирован: 2016-08-12
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с задачкой

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 (Авг. 29, 2016 11:55:48)

Офлайн

#6 Авг. 29, 2016 12:03:06

hewonders
Зарегистрирован: 2016-08-12
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с задачкой

Если в стоке есть фрукт и он больше нуля, тогда выполняется условие:

 total = total + prices[item]
stock[item] -= 1
В противном случае
total = total
то есть если нужного объекта нет в инвентаре, то тогда total, которому мы присвоили значение “0”, будет равен нулю будет равен самому себе. Но почему ошибка не ссылалась на это…. блин как сложно))

Отредактировано hewonders (Авг. 29, 2016 12:04:25)

Офлайн

#7 Авг. 29, 2016 12:03:25

hewonders
Зарегистрирован: 2016-08-12
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с задачкой

Ладно, оставлю как подсказали!! Спасибо всем за помощь))

Офлайн

#8 Авг. 29, 2016 13:23:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь с задачкой

hewonders
Они только добавили ещё
  
total = total
Кто добавлял такое, тот не знает нифига. Масло масляное.



Офлайн

#9 Авг. 29, 2016 21:03:43

alalekseev
Зарегистрирован: 2016-08-29
Сообщения: 1
Репутация: +  1  -
Профиль   Отправить e-mail  

Помощь с задачкой

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*

Отредактировано alalekseev (Авг. 29, 2016 21:07:12)

Офлайн

#10 Авг. 30, 2016 08:26:03

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Помощь с задачкой

Та уже писали в предложениях что форум неправильно работает - но чото никто не пофиксил!



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version