Loading...
Vixy_P avatar Vixy_P 0 Точки

Имам проблем с изпълнението на следния код:

Става дума за тази задача:

 

12.Търговски комисионни  

Фирма дава следните комисионни на търговците си според града, в който работят и обема на продажбите:

Град

0 ≤ s ≤ 500

500 < s ≤ 1 000

1 000 < s ≤ 10 000

s > 10 000

Sofia

5%

7%

8%

12%

Varna

4.5%

7.5%

10%

13%

Plovdiv

5.5%

8%

12%

14.5%

Напишете конзолна програма, която чете име на град (текст) и обем на продажби (реално число), въведени от потребителя, и изчислява и извежда размера на търговската комисионна според горната таблица. Резултатът да се изведе форматиран до 2 цифри след десетичната точка. При невалиден град или обем на продажбите (отрицателно число) да се отпечата "error".

Примерен вход и изход

вход

изход

 

вход

изход

 

вход

изход

 

вход

изход

Sofia

1500

120.00

Plovdiv

499.99

27.50

Varna

3874.50

387.45

Kaspichan

-50

error

 

sales = float(input())
town = input()

if town == "Sofia":
    if 0 <= sales <= 500:
        commission = sales * 0.05
        print(f"{commission:.2f}")
    elif 500 < sales <= 1000:
        commission = sales * 0.07
        print(f"{commission:.2f}")
    elif 1000 < sales <= 10000:
        commission = sales * 0.08
        print(f"{commission:.2f}")
    elif sales > 10000:
        commission = sales * 0.12
        print(f"{commission:.2f}")
    else:
        print("error")
elif town == "Varna":
    if 0 <= sales <= 500:
        commission = sales * 0.045
        print(f"{commission:.2f}")
    elif 500 < sales <= 1000:
        commission = sales * 0.075
        print(f"{commission:.2f}")
    elif 1000 < sales <= 10000:
        commission = sales * 0.10
        print(f"{commission:.2f}")
    elif sales > 10000:
        commission = sales * 0.13
        print(f"{commission:.2f}")
    else:
        print("error")
elif town == "Plovdiv":
    if 0 <= sales <= 500:
        commission = sales * 0.055
        print(f"{commission:.2f}")
    elif 500 < sales <= 1000:
        commission = sales * 0.08
        print(f"{commission:.2f}")
    elif 1000 < sales <= 10000:
        commission = sales * 0.12
        print(f"{commission:.2f}")
    elif sales > 10000:
        commission = sales * 0.145
        print(f"{commission:.2f}")
    else:
        print("error")
else:
    print("error")

 

Попринцип първият вход трябва да е текст, а вторият число. Но при подреден по този начин код (когато town е преди sales), програмата гръмва още с натискането на enter. При размяна (както е в случая) на входните данни, всички примерни изходи са ми коректни. Естествено judje се сърди и гръмва и при двете подредби, давайки ми 0/100. Каква може да е причината?

0
Programming Basics
svephoto avatar svephoto 1191 Точки

Здравей, Vixy_P,

 

Този код минава със 100/100 в Judge:

town = input()
sales = float(input())

if town == "Sofia":
    if 0 <= sales <= 500:
        commission = sales * 0.05
        print(f"{commission:.2f}")
    elif 500 < sales <= 1000:
        commission = sales * 0.07
        print(f"{commission:.2f}")
    elif 1000 < sales <= 10000:
        commission = sales * 0.08
        print(f"{commission:.2f}")
    elif sales > 10000:
        commission = sales * 0.12
        print(f"{commission:.2f}")
    else:
        print("error")
elif town == "Varna":
    if 0 <= sales <= 500:
        commission = sales * 0.045
        print(f"{commission:.2f}")
    elif 500 < sales <= 1000:
        commission = sales * 0.075
        print(f"{commission:.2f}")
    elif 1000 < sales <= 10000:
        commission = sales * 0.10
        print(f"{commission:.2f}")
    elif sales > 10000:
        commission = sales * 0.13
        print(f"{commission:.2f}")
    else:
        print("error")
elif town == "Plovdiv":
    if 0 <= sales <= 500:
        commission = sales * 0.055
        print(f"{commission:.2f}")
    elif 500 < sales <= 1000:
        commission = sales * 0.08
        print(f"{commission:.2f}")
    elif 1000 < sales <= 10000:
        commission = sales * 0.12
        print(f"{commission:.2f}")
    elif sales > 10000:
        commission = sales * 0.145
        print(f"{commission:.2f}")
    else:
        print("error")
else:
    print("error")

Единствената промяна спрямо това, което си дала е, че за прочитането на вход town е преди sales, както и трябва. Ти как подаваш входните данни при стартиране на програмата, ръчно или с copy-paste? Ако е по втория начин, възможно е между двата входа да има празен ред и затова да ти гърми на конзолата.

1
10/01/2022 21:37:43
Vixy_P avatar Vixy_P 0 Точки

Тествах решението Ви и по двата начина (с copy-paste и ръчно), и на двата ми изгърмя веднага, при ръчното решение дори не успях да подам третия вход. Но този път системата ми го прие и ми даде 100/100. Благодаря! Не знам защо компилаторът ми мрази точно този код, но не ми е за първи път. 

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