Имам проблем с изпълнението на следния код:
Става дума за тази задача:
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. Каква може да е причината?
Тествах решението Ви и по двата начина (с copy-paste и ръчно), и на двата ми изгърмя веднага, при ръчното решение дори не успях да подам третия вход. Но този път системата ми го прие и ми даде 100/100. Благодаря! Не знам защо компилаторът ми мрази точно този код, но не ми е за първи път.