缺少1个临时的位置参数

时间:2016-12-08 02:50:15

标签: python python-3.x arguments

我正在编写一个从其他程序导入函数的简单程序。它基本上将华氏温度转换为摄氏温度,反之亦然,具体取决于您给出的输入类型。这是主程序的代码:

def main():
    temp = int(input('What is the temperature? '))
    print('Is this temperature in fahrenheit or celsius?')
    system = int(input('Please put 1 for Fahrenheit and 2 for Celsius: '))
    if system == 1:
        from tempconvert import celsius
        celsius()
    elif system == 2:
        from tempconvert import fahrenheit
    fahrenheit()
    else:
        print('I dont understand.')
main()

以下是导入函数的程序代码:

def fahrenheit(temp):
    fahrenheit = temp * 1.8 + 32
    print('Your temperature in fahrenheit is ', fahrenheit)
def celsius(temp):
    celcius = temp - 32
    celsius = celcius / 1.8
    print('Your temperature in celsius is ', celsius)

当我去做的时候,它会接受我输入的温度,并且它会接受华氏温度和摄氏温度之间的区别。但是之后它会这样说:

celsius() missing 1 required positional argument: 'temp'

我真的无法弄清楚这一点,所以任何帮助都将不胜感激。感谢。

3 个答案:

答案 0 :(得分:1)

main()中,您在没有fahrenheit()参数的情况下同时调用celsius()temp,但您将这些函数定义为需要位置参数temp

按如下方式更新main()函数(此外,无需进行条件导入;只需导入文件顶部的两个函数):

from tempconvert import fahrenheit, celsius


def main():
    temp = int(input('What is the temperature? '))
    print('Is this temperature in fahrenheit or celsius?')
    system = int(input('Please put 1 for Fahrenheit and 2 for Celsius: '))
    if system == 1:
        celsius(temp)
    elif system == 2:
        fahrenheit(temp)
    else:
        print('I dont understand.')

答案 1 :(得分:1)

您忘了将参数传递给celsiusfahrenheit功能。更新您的main()功能,如下所示:

def main():
    temp = int(input('What is the temperature? '))
    print('Is this temperature in fahrenheit or celsius?')
    system = int(input('Please put 1 for Fahrenheit and 2 for Celsius: '))
    if system == 1:
        from tempconvert import celsius
        celsius(temp)      # pass 'temp' as parameter
    elif system == 2:
        from tempconvert import fahrenheit
        fahrenheit(temp)   # pass 'temp' as parameter
    else:
        print('I dont understand.')

答案 2 :(得分:0)

你的错误并没有进入温度论证。尝试:

interpreted

你会得到0

如果你的程序你会这样做:

celcius(32)