Предмет: Информатика, автор: bogdan2959

основываясь на условии я сделал код а он не работает

category = input('Категория (off - завершить):')
summa = int(input('Сумма:'))
if category.lower == 'Выпечка':
print('Скидка 30%. К оплате:',summa * 0.70)
elif category.lower() == 'Молочные продукты':
print('Скидка 10%. К оплате:',summa * 0.90)
else:
print('Сумма без скидки:', summa)
category = input('ВВедите категорию продуктов:')
print('Касса закрыта')

условие:
Программа должна запрашивать категорию и сумму, пока вместо категории не будет введено стоп-слово «off».

1. Когда вместо категории введено слово «off» — программа должна вывести «Касса закрыта.» и завершить работу.
2. Получив стоимость товаров, программа должна в зависимости от категории применить определённую скидку и вывести сумму к оплате на экран. Затем снова запросить ввод категории.
3. Если по введённой категории скидок нет, то программа должна без применения скидок вывести сумму к оплате.

Доступные скидки:
Категория «молочные продукты» — скидка 10%.
Категория «выпечка» — скидка 30%.

Итог:
Категория (off - завершить):
>>> выпечка
Сумма:
100
Скидка 30%. К оплате: 70.0
Введите категорию продуктов:
>>> off
Касса закрыта.

Ответы

Автор ответа: trueberry17
0

Ошибки / Объяснение:

1. В условие сказано что будет запрашивать до тех пор, пока не будет off слова, буквально от слова "пока"(while на английском) должен стоять цикл While. Я поставила While True, а не пока не off, потому что тогда бы оно пошло после категории off еще спрашивать о сумме. В ином случае же можно было сделать while category != "off".

3. На 3ей строчке пропущены скобки: if category.lower() == 'выпечка'..

4. Проверку на регистр ты хорошо придумал, но ты немного ошибся, буквально ты сделал "Если выпечка == Выпечка, то", то-есть когда делаешь проверку для любого регистра на мелкие буквы, в ответе тоже должны быть мелкие буквы : if category.lower() == 'выпечка'..

В общем я подправила код, вот:

Python Code:

print('Категория (off - завершить):')

while True:

   category = input('Введите категорию продуктов:')

   if category.lower() == 'off':

       break

   summa = int(input('Сумма:'))

   if category.lower() == 'выпечка':

       print('Скидка 30%. К оплате:', summa * 0.70)

   elif category.lower() == 'молочные продукты':

       print('Скидка 10%. К оплате:', summa * 0.90)

   else:

       print('Сумма без скидки:', summa)

print('Касса закрыта.')


bogdan2959: а можно без break сделать?
trueberry17: команда break завершает любой цикл, в данном случае while True, без него код больше становится:
trueberry17: print('Категория (off - завершить)')
enabled = True
while enabled == True:
----category = input('Введите категорию продуктов:')
----if category.lower() != 'off':
--------summa = int(input('Сумма:'))
--------if category.lower() == 'выпечка':
------------print('Скидка 30%. К оплате:', summa * 0.70)
--------elif category.lower() == 'молочные продукты':
------------print('Скидка 10%. К оплате:', summa * 0.90)
--------else:
------------print('Сумма без скидки:', summa)
----else:
--------enabled = False
trueberry17: и в конец еще просто print('Касса закрыта.')
trueberry17: тире - это пробел, просто этот сайт не позволяет с ними комментировать вроде как
Похожие вопросы
Предмет: Русский язык, автор: dashaponomareva4
Предмет: Другие предметы, автор: дима2346