Суммирование суммы заказа в питоне - PullRequest
0 голосов
/ 22 октября 2019

У меня есть функция, вызывающая функцию для получения информации о пользователе, а затем для суммирования заказа. Я смог заставить его напечатать итоговую сумму товара, но у меня возникли проблемы с печатью итоговой суммы заказа, когда пользователь закончил. Если я использую функцию для вычисления математики, то функцию для получения пользовательского ввода, а теперь третью функцию, которая зацикливает процесс заказа, лучше бы я изменил математическую функцию или функцию цикла, чтобы получить порядокитого?

Сначала я попытался добавить переменную 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__

1 Ответ

0 голосов
/ 22 октября 2019

Чтобы сделать минимальный пример, просто замените всю свою логику пиццы на функцию, которая возвращает 1.0. После этого вы сможете легко увидеть ваши 2 проблемы:

  • sums += находится внутри буквы "N" вместо ветви "Y"
  • Вы распечатываете значение nextPizzaвместо суммы суммы для суммы заказа
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...