При вызове функции отсутствует обязательный позиционный аргумент: - PullRequest
0 голосов
/ 12 октября 2018

Я делаю программу для ресторана, и учитель попросил нас «упростить» ее из оригинала.Тем не менее, я продолжаю получать сообщение об ошибке "

TypeError: computeTotal () отсутствует 1 обязательный позиционный аргумент: 'пить')

Я знаю, что это ошибка области, но яЯ не уверен, как это исправить, так как переменная является глобальной переменной.

def getdrinks():
    drinks = float(input('dollar amount for drinks: $'))
    return drinks

def getapps():
    apps = float(input('dollar amount for apps: $'))
    return apps

def getMC():
    mainCourse = float(input('dollar amount for main course: $'))
    return mainCourse

def getdessert():
    dessert = float(input('dollar amount for desserts: $'))
    return dessert

def getPurchaseAmts():
    getdrinks()
    getapps()
    getMC()
    getdessert()
getPurchaseAmts()

def computeTotal(drinks, apps, mainCourse, dessert):
    Total = (drinks + apps + mainCourse + dessert)
    print ("Bill total (before tax and preTip): ",Total)
computeTotal()    

drinks = getdrinks()
apps = getapps()
mainCourse = getMC()
dessert = getdessert()

1 Ответ

0 голосов
/ 12 октября 2018

Вы путаете параметры с внешне определенными значениями.

Эти параметры могут быть названы совершенно разными вещами, и хотя они в настоящее время совпадают с другими, это не означает, что их значения автоматически передаютсяв функцию

Например,

def computeTotal(a, b, c, d):
    total = (a + b + c + d)
    print ("Bill total (before tax and preTip): ",total)


drinks = getdrinks()
apps = getapps()
mainCourse = getMC()
dessert = getdessert()

# this must be last, and you need to pass values into the function 
computeTotal(drinks, apps, mainCourse, dessert)

И вы можете удалить getPurchaseAmts(), потому что он ничего не делает, но заставляет вас повторить ввод дважды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...