Python函数错误

时间:2017-03-20 06:25:30

标签: python

第一次发帖。所以我的Python类赋值让我创建了一个计算Miles Per Gallon的程序,然后打印MPG是否好。所以这是要求:

该程序将进一步测试总共4辆汽车,将对用户输入进行数据验证,并将利用功能来完成工作。 总共有7个函数:main(), printWelcome(), getMiles(), getGallons(), calcMpg(), printMpg(), and rateMpg() 功能如下:

main()

•没有参数(即空参数列表) •将调用printWelcome()函数 •然后将循环运行4次,这将执行以下操作 o致电getMiles() o致电getGallons() o致电calcMpg() o致电printMpg() o致电rateMpg() o上述步骤将涉及的代码不仅仅是方法调用,而是需要您确定

printWelcome()

•没有参数 •将打印出之前使用的欢迎消息

getMiles()

•没有参数 •将询问用户的整数英里数 •将进行数据验证以确保里程数> 0 •一旦获得了良好的数据,就会将里程数(即用户输入)返回给调用函数

getGallons()

•没有参数 •将询问用户的整数加仑数 •将进行数据验证以确保加仑是> 0 •一旦获得了良好的数据,就会将加仑数(即用户输入)返回给调用函数

calcMpg()

•将有2个参数 - 一个用于英里数,一个用于加仑数 •将计算mpg,然后返回该值

printMpg()

•将有1个参数,即mpg的值 •将打印该值,必须格式化为小数点后的3位 •不返回任何新信息

rateMpg()

•将有1个参数,即mpg的值 •将根据以下标准打印出一条消息,指示mpg有多好: •对于小于12的mpg,将打印"差mpg。" •对于介于12(含)和19(含)之间的mpg,将打印" Fair mpg。" •对于介于20(含)和26(含)之间的mpg,将打印" Good mpg。" •对于大于26的mpg,将打印"优秀的mpg。" 这是我的代码:

def main():
    printWelcome()
    getMiles()
    getGallons()
    calMPG()
    printMPG()
    rateMPG()

def printWelcome():
    print ("Welcome to my Miles Per Gallon program")

def getMiles():
    miles = int(input('How many miles did you drive? '))
    while miles < 0:
     print("Number cannot be negative. Try again.")
     miles = int(input('How many miles did you drive? '))
    return miles

def getGallons():
    gals = int(input('How many gallons of gas did you use? '))
    while gals < 0:
     print("Number cannot be negative. Try again.")
     gals = int(input('How many gallons of gas did you use? '))
    return gals

def calMPG(miles, gals):
    MPG = miles / gals
    return MPG

def printMPG(MPG):
    print("Your MPG is", \
       format(MPG, '.3f'))

def rateMPG(MPG):
    if MPG < 12:
        print("Poor MPG")
    elif MPG >= 12 and MPG <= 19:
        print("Fair MPG")
    elif MPG >= 19 and MPG <= 26:
         print("Good MPG")
    elif MPG < 26:
        print("Excellent MPG")



main()

这是弹出的错误: calMPG() 缺少2个必需的位置参数:&#39;里程&#39;和&#39; gals&#39;

为什么我需要2个必需的参数? calMPG有2个参数。我对此错误感到困惑。我真的觉得这是一件非常容易的事,但对于我的生活来说,答案是今晚躲着我。任何反馈都非常感谢。感谢。

2 个答案:

答案 0 :(得分:0)

在你的主要 你在没有参数的情况下调用calMPG 您可以按照以下方式更改代码

def calMPG(miles=None, gals=None):
    if miles and gals:
        MPG = miles / gals
        return MPG

答案 1 :(得分:0)

由于您正在调用返回值的函数,因此需要将它们存储在某处。由于您没有将数据存储在每个函数的本地范围内的数据丢失的任何地方,这意味着正在调用函数,因为它们没有被分配到任何地方而被丢弃。同样如Kuldeep K. Rishi所述,您也在不使用您要定义的参数调用函数。修复应如下。 在pycharm中测试

def main():
    printWelcome()
    miles = getMiles()
    gals = getGallons()
    mpg = calMPG(miles, gals)
    printMPG(mpg)
    rateMPG(mpg)

def printWelcome():
    print ("Welcome to my Miles Per Gallon program")

def getMiles():
    miles = int(input('How many miles did you drive? '))
    while miles < 0:
     print("Number cannot be negative. Try again.")
     miles = int(input('How many miles did you drive? '))
    return miles

def getGallons():
    gals = int(input('How many gallons of gas did you use? '))
    while gals < 0:
     print("Number cannot be negative. Try again.")
     gals = int(input('How many gallons of gas did you use? '))
    return gals

def calMPG(miles, gals):
    MPG = miles / gals
    return MPG

def printMPG(MPG):
    print("Your MPG is", \
       format(MPG, '.3f'))

def rateMPG(MPG):
    if MPG < 12:
        print("Poor MPG")
    elif MPG >= 12 and MPG <= 19:
        print("Fair MPG")
    elif MPG >= 19 and MPG <= 26:
         print("Good MPG")
    elif MPG < 26:
        print("Excellent MPG")

main()

稍微优化的调用函数的版本将不会要求您存储尽可能多的变量,主要功能的更改将如下所示。

def main():
    printWelcome()
    mpg = calMPG(getMiles(), getGallons())
    printMPG(mpg)
    rateMPG(mpg)