Самый краткий способ сделать это состоит в том, чтобы сопоставить возрасты, определить, в какую корзину попадает данный возраст, а затем использовать индекс для возврата цены.
np.digitize
выполняет эту задачу - параметр
bins
, содержит возрасты и определяет, к какому индексу в списке подходит данное значение. bins
является эксклюзивным, поэтому диапазоны 0-4, 5-9, 10-17, 18-65 и 66 +. - диапазоны соответствуют индексам 0, 1, 2, 3 и 4.
idx
используется для возврата соответствующей цены за возрастной диапазон - Используйте функцию для возврата стоимости вместо набора
if-elif
утверждений - Направления, выделенные желтым цветом, не требуют, чтобы имя или возраст человека были возвращены.
- Все, что требуется для печати в конце, может быть рассчитано на основании списка расходов,содержит цену каждого клиента.
print(f'some string {}')
является f-String - Тип Подсказки используются в функциях (например,
def calc_cost(value: int) -> float:
).
import numpy as np
def calc_cost(value: int) -> float:
prices = [0, 5, 10, 15, 12]
idx = np.digitize(value, bins=[5, 10, 18, 66])
return prices[idx] + prices[idx] * 0.08
cost = list()
while True:
age = input('What is your age? ')
if age == 'exit':
break
cost.append(calc_cost(int(age)))
# if cost is an empty list, nothing prints
if cost:
print(f'The cost for each diner was: {cost}')
print(f'There were {len(cost)} diners.')
print(f'The average cost per diner was: {sum(cost)/len(cost):.02f}')
print(f'The total meal cost: {sum(cost):.02f}')
Вывод:
What is your age? 4
What is your age? 5
What is your age? 9
What is your age? 10
What is your age? 17
What is your age? 18
What is your age? 65
What is your age? 66
What is your age? exit
The cost for each diner was: [0.0, 5.4, 5.4, 10.8, 10.8, 16.2, 16.2, 12.96]
There were 8 diners.
The average cost per diner was: 9.72
The total meal cost: 77.76
Если не разрешено использовать numpy
:
def calc_cost(value: int) -> float
return value + value * 0.08
cost = list()
while True:
age = input("What age is the person eating? ")
if age == 'exit':
break
age = int(age)
if age < 5:
value = 0
elif age < 10:
value = 5
elif age < 18:
value = 10
elif age < 66:
value = 15
else:
value = 12
cost.append(calc_cost(value))
if cost:
print(f'The cost for each diner was: {cost}')
print(f'There were {len(cost)} diners.')
print(f'The average cost per diner was: {sum(cost)/len(cost):.02f}')
print(f'The total meal cost: {sum(cost):.02f}')
Примечания:
- Не используйте
break
во всех if-elif
условиях, потому что это нарушает while-loop
- Каждый раз, когда вы повторяете что-то, например, вычисление цены, пишите функцию.
- Ознакомьтесь с вашимself с структурами данных Python , например
list
и dict
- , для этого нужно сложить все суммы вместе, и я не знаю, как.
list.append(price)
в цикле sum(list)
для получения суммы