Я пишу простую программу, которая импортирует функции из другой программы. Он в основном конвертирует Фаренгейт в Цельсий или наоборот, в зависимости от того, какой вклад вы ему даете. Вот код для основной программы:

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'

Я действительно не могу понять это, поэтому любая помощь будет оценена. Благодарю.

0
Malachi Pendleton 8 Дек 2016 в 05:50

3 ответа

Лучший ответ

Вы забыли передать параметр в celsius и fahrenheit функцию. Обновите вашу функцию 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.')
1
Wasi Ahmad 8 Дек 2016 в 02:54

Ваша ошибка - не вводить аргумент в пользу температуры. Пытаться:

celcius(32)

И вы получите 0

В случае вашей программы вы бы сделали:

celcius(temp)
0
Qwerty 8 Дек 2016 в 02:56

В 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
elethan 8 Дек 2016 в 03:00