Loading...
rapostolova avatar rapostolova 4 Точки

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
Programming Basics
svephoto avatar svephoto 1191 Точки

Здравей, колежке,

 

Би ли дала, ако обичаш и условието на задачата?

0
rapostolova avatar rapostolova 4 Точки

Здравей, колега,

Да, ето го тук:

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

Град 0 ≤ s ≤ 500 500 &lt; s ≤ 1 000 1 000 &lt; s ≤ 10 000 s &gt; 10 000
Sofia           5%                            7%                        8%                 12%
Varna          4.5%                         7.5%                     10%               13%
Plovdiv        5.5%                         8%                        12%               14.5%

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

 

0
svephoto avatar svephoto 1191 Точки

Виж този вариант на твоето решение (ползвал съм твоя код, минава със 100/100): https://pastebin.com/MudfKjEX.

 

Успех!

0
rapostolova avatar rapostolova 4 Точки

Много благодаря. Сега работи, разбрах къде ми е грешката, само не разбрах защо в началото трябва да се даде стойност -1 на commission и защо на 0 гърми. Ако можеш утре да ми кажеш, ще съм ти безкрайно благодарна. 

0
svephoto avatar svephoto 1191 Точки

Ами то може би за мен лично проблемът по начало идва от това, че условието е малко завъртяно и до известна степен трудно за ориентация. Всъщност, по условие, трябва да отпечатаме error или при невалиден град, или при обем на продажбите < 0. Като си зададем в началото commission да е -1 си осигуряваме при подадена и отрицателна стойност за обема на продажбите да принтираме error, защото така и така градът е невалиден, но не може едновременно и градът да е невалиден, и обемът продажби да < 0 - не влизаме никъде в никаква проверка, а се иска от нас да отпечатаме error при неизпълнено едно от двете условия. Е да де, ама очевидно има варианти в тестовете, при които ни подават и двата входа да са невалидни, та и в тези случаи трябва да отпечатаме error, а как да го направим като не влизаме в кода и проверките за град и обем на продажбите? Така че накрая като проверяваме, го правим по commissions, чиято стойност при въведени и двата входа невалидни, е -1 и отпечатваме error. Прилагаме един вид "трик". :D Плетеница малко, уловчица, ама все пак се надявам да успееш да го разбереш. То и аз самият в момента докато пиша не съм сигурен дали съумявам да го схвана напълно, ама работи, хахахххх :))))

0
25/02/2020 00:07:49
rapostolova avatar rapostolova 4 Точки

Разбрах те, аз не си и помислих че е толкова завартяно. Ще гледам повече за тези неща. :)

Благодаря за помощта и за обяснението.

1
svephoto avatar svephoto 1191 Точки

Радвам се, че ме разбра и моля - радвам се да помогна.

Има такива задачи/проблеми с по-завъртяни условия и това помага за развиване на мисленето за т. нар. "гранични случаи" (edge cases): "Ами какво ще стане, ако ми подадат на входа еди какви си данни?" Та такива работи. Успех и занапред!

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