Loading...
EmoKey avatar EmoKey 1 Точки

Basic-Syntax-Conditional-Statements-and-Loops-Exercise - 09. Easter Bread, 90/100 points - what's wrong, please?

budget = float(input())
flour_price = float(input())

pack_of_eggs_price = flour_price * 0.75
liter_of_milk_price = flour_price * 1.25

bread_price = flour_price + pack_of_eggs_price + liter_of_milk_price * 0.25

loaves = 0
colored_eggs = 0
remaining_sum = 0

while budget >= bread_price:
    loaves += 1
    remaining_sum = budget - bread_price
    budget -= bread_price
    colored_eggs += 3
    if loaves % 3 == 0:
        colored_eggs -= (loaves - 2)

print(f'You made {loaves} loaves of Easter bread! Now you have {colored_eggs} eggs and {remaining_sum:.2f}BGN left.')
Тагове:
1
Fundamentals Module 23/09/2021 21:12:48
svephoto avatar svephoto 1191 Точки

Здравей, EmoKey,

 

Ако подам на твоя код бюджет, който е по-малък от цената на един хляб, ще отпечата като изход, че имам останала сума 0.00BGN, а трябва да отпечата първоначално подадения бюджет. Затова си остави само

budget -= bread_price

и после при печатането замести remaining_sum с budget, и си готов. laugh А вероятно този тест, който не минава, прави точно това - подава за бюджет сума, по-малка от тази на един хляб и затова гърми.

Цялото със закоментирани нещата, за които пиша: https://pastebin.com/S0NgZFiR.

1
23/09/2021 23:07:49
icowwww avatar icowwww 2779 Точки

Добре, че рефрешнах преди да пусна отговора laugh

Причината за това да не минава теста най-вероятно е, че бюджета не стига и за един хляб. Съответно няма да завърти цикъла нито веднъж и ще принтира тази ненужна променлива с началната стойност- 0, защото се променя само в цикъла.

1
svephoto avatar svephoto 1191 Точки

Хахахххх, icowwww laugh, а пък аз току-що редактирах и точно това уточних, защото установих именно това, което и ти казваш. Тествах локално с бюджет, по-малък от цената на един хляб и ми отпечата на конзолата, че накрая съм останал с 0.00BGN, а всъщност трябва да ми принтира самия бюджет.

1
23/09/2021 23:11:42
vvsvvs avatar vvsvvs 4 Точки

Ако се използва целочислено деление вместо цикъл проблема с недостига на бюджета още в началото няма как да се прояви, защото при деленето направо се получава, че броят на хлябовете е 0 https://pastebin.com/m7uiRFb9

0
dgodinov avatar dgodinov 2 Точки

Този останал бюджет е излишен.Просто долу в принта , може да сложиш budget вместо remaining_sum , така или иначе при всяко превъртане на цикъла го намаляваш , в условието си му дал да върти цикъла само ако "имаш пари за това" , така че няма как да стане и отрицателно число.

https://pastebin.com/p3pzD1CC

0
webdesign avatar webdesign 1 Точки

Съгласен съм, че    remaining_sum = budget - bread_price    и   budget -= bread_price  и двете команди правят едно и също. Те са идентични. Следователно само едната команда е достатъчна. Да  само с budget -= bread_price кода тръгна. Но би трябвало и с   remaining_sum = budget - bread_price също да тръгне а се получава безкраен цикъл на въвеждане,.... 

    Няма логично обяснение  :)

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.