Programming Basics Python - задачата Trade Commissions
Здравейте колеги,
Как се справихте с тази задача?
Аз изкарвам 82 точки, когато проверя къде гърми, пише че при подадени данни Каспичан и -50, output-a трябва да е...ами нищо, а моят е error. Не разбирам защо това е грешка, такова е условието.
После при подадени Бургас и -20, output-a трябва да е нищо, а моят е 0.00 и -0.00, не разбирам защо. Ако вие имате решение, много ще се радвам да го видя.
city = input()
sales = float(input())
commission = 0
if city == 'Sofia':
if 0 <= sales <= 500:
commission = 0.05
elif 500 <= sales <= 1000:
commission = 0.07
elif 1000 <= sales <= 10000:
commission = 0.08
elif sales > 10000:
commission = 0.12
elif city == 'Varna':
if 0 <= sales <= 500:
commission = 0.045
elif 500 <= sales <= 1000:
commission = 0.075
elif 1000 <= sales <= 10000:
commission = 0.10
elif sales > 10000:
commission = 0.13
elif city == 'Plovdiv':
if 0 <= sales <= 500:
commission = 0.055
elif 500 <= sales <= 1000:
commission = 0.08
elif 1000 <= sales <= 10000:
commission = 0.12
elif sales > 10000:
commission = 0.145
elif city != 'Sofia' or city != 'Plovdiv' or city != 'Varna':
print('error')
if sales < 0:
print('error')
com = sales * commission
print(f'{com:.2f}')
Здравей, колега,
Да, ето го тук:
Фирма дава следните комисионни на търговците си според града, в който работят и обема на продажбите:
Град 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".
Виж този вариант на твоето решение (ползвал съм твоя код, минава със 100/100): https://pastebin.com/MudfKjEX.
Успех!
Много благодаря. Сега работи, разбрах къде ми е грешката, само не разбрах защо в началото трябва да се даде стойност -1 на commission и защо на 0 гърми. Ако можеш утре да ми кажеш, ще съм ти безкрайно благодарна.
Ами то може би за мен лично проблемът по начало идва от това, че условието е малко завъртяно и до известна степен трудно за ориентация. Всъщност, по условие, трябва да отпечатаме error или при невалиден град, или при обем на продажбите < 0. Като си зададем в началото commission да е -1 си осигуряваме при подадена и отрицателна стойност за обема на продажбите да принтираме error, защото така и така градът е невалиден, но не може едновременно и градът да е невалиден, и обемът продажби да < 0 - не влизаме никъде в никаква проверка, а се иска от нас да отпечатаме error при неизпълнено едно от двете условия. Е да де, ама очевидно има варианти в тестовете, при които ни подават и двата входа да са невалидни, та и в тези случаи трябва да отпечатаме error, а как да го направим като не влизаме в кода и проверките за град и обем на продажбите? Така че накрая като проверяваме, го правим по commissions, чиято стойност при въведени и двата входа невалидни, е -1 и отпечатваме error. Прилагаме един вид "трик". :D Плетеница малко, уловчица, ама все пак се надявам да успееш да го разбереш. То и аз самият в момента докато пиша не съм сигурен дали съумявам да го схвана напълно, ама работи, хахахххх :))))
Разбрах те, аз не си и помислих че е толкова завартяно. Ще гледам повече за тези неща. :)
Благодаря за помощта и за обяснението.
Радвам се, че ме разбра и моля - радвам се да помогна.
Има такива задачи/проблеми с по-завъртяни условия и това помага за развиване на мисленето за т. нар. "гранични случаи" (edge cases): "Ами какво ще стане, ако ми подадат на входа еди какви си данни?" Та такива работи. Успех и занапред!
Tests commonly help you with the trip a lot. This is because they go about as rules for you, with the objective that you perceive what you ought to do, considering the work that has been done by various understudies before you.
By: https://articleoftheweek.com/2020/02/21/the-museum-of-selfies-in-hollywood/