Професионална програма
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 1114 Точки

Здравей, 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