Loading...
dunedanetz avatar dunedanetz 5 Точки

Въпрос относно Conditional Statements - Lab - 08-Toy Shop

Здравейте, Реших задачата за Toy Shop, като в PyCharm всичко е точно, но като я пусна в judge ми дава само 60/100. Гледах, гледах, не успях да намеря пробрем. Пускам тук моето решение, за да може някой ако види проблемът, да ме светне :)

trip_cost = float(input())
puzzle_count = int(input())
talking_doll = int(input())
teddy_bear = int(input())
minnions = int(input())
trucks = int(input())

total_count = puzzle_count + talking_doll + teddy_bear + minnions + trucks
combined_purchase = (puzzle_count*2.60) + (talking_doll*3) + (teddy_bear*4.10) + (minnions*8.20) + (trucks*2)
discount = (combined_purchase*25)/100

if total_count < 50:
    rent2 = ((combined_purchase*10)/100)
    total2 = combined_purchase - rent2
    if total2 < trip_cost:
        money_left2 =(trip_cost - total2)
        final2 = round(money_left2, 2)
        print('Not enough money! {0} lv needed.'.format(final2))
    elif total2 >= trip_cost:
        money_left3 = (total2 - trip_cost)
        final3 = round(money_left3, 2)
        print('Yes! {0} lv left.'.format(final3))
elif total_count >= 50:
    discounted_price = combined_purchase - discount
    rent = (discounted_price*10)/100
    total = discounted_price - rent
    if total >= trip_cost:
        money_left = (total - trip_cost)
        final = round(money_left, 2)
        print('Yes! {0} lv left.'.format(final))
    elif total < trip_cost:
        money_left4 = (trip_cost - total)
        final4 = round(money_left4, 2)
        print('Not enough money! {0} lv needed.'.format(final4))
Тагове:
1
Programming Basics with Python 28/04/2020 17:45:00
MartinBG avatar MartinBG 4803 Точки

Не успях да открия проблем в кода ти (има доста повторения, но като логика е коректен), което ме наведе на мисълта, че проблемът е в извеждането на резултата, и по-точно във форматирането на числата. 

 

В първото условие на задачата, което открих, пишеше:

Резултатът трябва да се форматира до втория знак след десетичната запетая.

Пробвах без успех варианти, които гарантирант 2 цифри след десетичната запетая, например:

print('Yes! {:,.2f} lv left.'.format(balance))

 

След ровене в Judge, попаднах на този вариант на условието на задачата, в който се казва следното:

The output for real numbers should be formatted to the second digit after the decimal point.

Т.е. форматираме до 2-рия знак само сумите, които не са цели числа (напр. 4.34, 12.10), докато целите числа трябва да се изведат без .00 накрая (напр. 123 вместо 123.00).

 

Синтаксиса за постигане на това в Python е нетипично многословен за езика:

print('Yes! %0.*f lv left.' % (isinstance(balance, float) * 2, balance))

 

Ето решение на задачата, което минава в Judge:

trip_cost = float(input())
puzzles = int(input())
dolls = int(input())
bears = int(input())
minions = int(input())
trucks = int(input())

total_toys = puzzles + dolls + bears + minions + trucks
total_price = puzzles * 2.60 + dolls * 3.0 + bears * 4.10 + minions * 8.20 + trucks * 2.0

if total_toys >= 50:
    total_price *= 0.75

revenue = total_price * 0.9

balance = revenue - trip_cost

if balance >= 0.0:
    print('Yes! %0.*f lv left.' % (isinstance(balance, float) * 2, balance))
else:
    print('Not enough money! %0.*f lv needed.' % (isinstance(-balance, float) * 2, -balance))

 

0
28/04/2020 23:23:38
Vikadie avatar Vikadie 3 Точки

Здравей,

Ето и моето решение, което е минало през Judge:

excursion = float(input())
num_puzzles = int(input())
num_speaking_dolls = int(input())
num_teddy_bear = int(input())
num_minion = int(input())
num_truck = int(input())

puzzle = 2.6
speaking_doll = 3
teddy_bear = 4.1
minion = 8.2
truck = 2

number = num_minion + num_puzzles + num_speaking_dolls + num_teddy_bear + num_truck
if number >= 50:
    discount = 0.25
else:
    discount = 0

turnover = (puzzle * num_puzzles + speaking_doll * num_speaking_dolls + teddy_bear * num_teddy_bear + num_minion * minion + truck * num_truck) * (1 - discount)
profit = turnover * 0.9

if profit >= excursion:
    print(f"Yes! {(profit - excursion):.2f} lv left.")
else:
    print(f"Not enough money! {(excursion - profit):.2f} lv needed.")

 

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