У меня есть функция, вызывающая функцию для получения информации о пользователе, а затем для суммирования заказа. Я смог заставить его напечатать итоговую сумму товара, но у меня возникли проблемы с печатью итоговой суммы заказа, когда пользователь закончил. Если я использую функцию для вычисления математики, то функцию для получения пользовательского ввода, а теперь третью функцию, которая зацикливает процесс заказа, лучше бы я изменил математическую функцию или функцию цикла, чтобы получить порядокитого?
Сначала я попытался добавить переменную sums = 0, а затем изменить переменную, вызывающую функцию, с помощью суммы + = userVariable, но я думаю, что это моя проблема, поскольку переменная вызывает функцию, а не целое число,Мои строительные функции:
#currency function
def format_currency(x):
currency = '${:,.2f}'.format(x)
return (currency)
#math function
def calc_pizza_charge(s,m,o,q):
smPizza = 6.50
mdPizza = 9.50
lgPizza = 11.50
meatPrice = 3.50
vegPrice = 1.50
charge = 0
if s == 1:
charge = smPizza
elif s == 2:
charge = mdPizza
else:
charge = lgPizza
if m > 1:
charge += (m-1)*meatPrice
if o > 1:
charge += (o-1)*vegPrice
charge = q*charge
return charge
#user input function
def get_pizza_info():
size = int(input("Enter pizza size (1 small, 2 medium, 3 large): "))
numMeat = int(input("Enter number meat toppings: "))
nonMeat = int(input("Enter number or non-meat toppings: "))
count = int(input("Enter number of pizzas ordered: "))
return calc_pizza_charge(size, numMeat, nonMeat, count)
#looping order process
def take_customer_order():
done = False
sums = 0
while not done:
inval = input("Order a pizza? (Y/N): ").capitalize()
if inval == "Y":
nextPizza = get_pizza_info()
print("Pizza Total: " + format_currency(nextPizza))
elif inval == "N":
done = True
sums += nextPizza
print("Order Total: " +format_currency(nextPizza))
Ожидаемые:
Enter pizza size (1 small, 2 medium, 3 large): 3
Enter number meat toppings: 2
Enter number or non-meat toppings: 3
Enter number of pizzas ordered: 2
Pizza Total: $36.00
Order a pizza? (Y/N): Y
Enter pizza size (1 small, 2 medium, 3 large): 1
Enter number meat toppings: 1
Enter number or non-meat toppings: 2
Enter number of pizzas ordered: 1
Pizza Total: $8.00
Order a pizza? (Y/N): N
Order Total: $44.00
Фактические:
Order a pizza? (Y/N): y
Enter pizza size (1 small, 2 medium, 3 large): 3
Enter number meat toppings: 2
Enter number or non-meat toppings: 2
Enter number of pizzas ordered: 2
Pizza Total: $33.00
Order Total: $33.00
Order a pizza? (Y/N): y
Enter pizza size (1 small, 2 medium, 3 large): 2
Enter number meat toppings: 1
Enter number or non-meat toppings: 2
Enter number of pizzas ordered: 2
Pizza Total: $22.00
Order Total: $22.00
Order a pizza? (Y/N): n
Order Total: $22.00
Traceback (most recent call last):
File "C:/Users/guita/Documents/School/CSCI100/CSCI100_Lab5_P/CSCI100_Lab5_P/problem4.py", line 6, in <module>
print("Order Total: " + lab5_functions.format_currency(total))
File "C:\Users\guita\Documents\School\CSCI100\CSCI100_Lab5_P\CSCI100_Lab5_P\lab5_functions.py", line 7, in format_currency
currency = '${:,.2f}'.format(x)
TypeError: unsupported format string passed to NoneType.__format__