函数调用缺少必需的位置参数:

时间:2018-10-12 02:58:07

标签: python python-3.x variables scope

我正在制作一个上课的饭店制表程序,老师要求我们从原始程序中“模块化”它。但是,我不断收到错误消息”

  

TypeError:computeTotal()缺少1个必需的位置参数:“ drinks”)

我知道这是一个范围错误,但是由于该变量是全局变量,所以我不确定如何解决它。

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 :(得分:0)

您正在将参数与外部定义的值混淆。

这些参数可以命名为完全不同的名称,即使它们当前与其他参数相同,也并不意味着它们的值会自动传递给函数

例如

ifelse

您可以删除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) ,因为它什么也没做,只是让您重复输入两次