2015-05-31 5 views
0

Я пытаюсь вызвать предыдущую функцию, которую я создал в другой функции, но она, похоже, не работает вообще. Я новичок в python, и я стараюсь узнать, что любая помощь будет с радостью получена. Вот код, который я работал на:Вызов функции внутри другой функции в python

# Converts temperature celsius to farhenheit 
def celsius_farhenheit(temp_celsius): 
    temp = temp_celsius * 1.8 + 32 
    return temp 
#Tests the celsius to farhenheit conversion function 
t1 = celsius_farhenheit(20) 
print t1 

#Converts farhenheit to celsius 
def farhenheit_celsius(temp_farhenheit): 
    temp = celsius_farhenheit(temp_celsius) 
    celsius = (temp - 32) * 5/9 
    return celsius 
#tests the farhenheit to celsius conversion function 
t2 = farhenheit_celsius(40) 
print t2 

Ошибки я получаю:

NameError: name 'temp_celsius' is not defined

Я понимаю, что temp_celsius не определен в моей farhenheit_celsius функции только в моей celsius_farhenheit функции. Я предполагаю, что я пытаюсь выяснить, как вызвать мою функцию celsius_farhenheit и реализовать ее в моей функции farhenheit_celsius, чтобы получить правильное преобразование farhenheit для целиллинга.

Как это исправить?

+3

Ваш код логически не имеет смысла. Преобразование по Фаренгейту -> Цельсия имеет температуру в Фаренгейте. Какой смысл переменной temp в ваших расчетах? Это не принадлежит. –

+0

Если у вас уже есть temp_celsius, вы можете вернуть его, не делая вычисления. – DavidK

ответ

0

это должно исправить код. ваш код имел синтаксис и логическую ошибку.

Я редактировал свой код и комментировал нежелательные линии

вы должны прокомментировать temp= линии и изменить celsius = (temp - 32) * 5/9 к celsius = (temp_farhenheit - 32)/1.8

# Converts temperature celsius to farhenheit 
def celsius_farhenheit(temp_celsius): 
    temp = temp_celsius * 1.8 + 32 
    return temp 
#Tests the celsius to farhenheit conversion function 
t1 = celsius_farhenheit(20) 
print t1 


#Converts farhenheit to celsius 
def farhenheit_celsius(temp_farhenheit): 
    #temp = celsius_farhenheit(temp_farhenheit) 
    #print temp_farhenheit 
    celsius = (temp_farhenheit - 32)/1.8 
    #print celsius 
    return celsius 
#tests the farhenheit to celsius conversion function 
t2 = farhenheit_celsius(68) 
print t2 

первой функция преобразует 20 С до 68 х

в вторая функция преобразует 68 f в 20 C

вы можете легко отладить путем правильного размещения печатать заявления, такие как заявления печати, которые я прокомментировал во второй функции.

0

F_C получает температуру в farhenheit и рассчитать (temp_farhenheit- 32) * 5.0/9
C_F получает температуру в градусах Цельсия и вычислить temp_celsius * 1.8 + 32

Поэтому в основном то, что вы хотите:

# Converts temperature celsius to farhenheit 
def celsius_farhenheit(temp_celsius): 
    temp = temp_celsius * 1.8 + 32 
    return temp 
#Tests the celsius to farhenheit conversion function 
t1 = celsius_farhenheit(20) 
assert t1 == 68 # since 20 Celsiusare 68 fahrenheit 

#Converts farhenheit to celsius 
def farhenheit_celsius(temp_farhenheit): 
    celsius = (temp_farhenheit- 32)/1.8 
    return celsius 
#tests the farhenheit to celsius conversion function 
t2 = farhenheit_celsius(40) 
assert t2==(4+4.0/9) # since 40 fahrenheit are 4.444 Celsius 

Обратите внимание, что я изменил
celsius = (temp_farhenheit- 32) * 5/9
:
celsius = (temp_farhenheit- 32)/1.8
Итак, теперь он возвращает с плавающей запятой. Для того, чтобы проверить себя, вы также можете сделать это:

x=40 
assert farhenheit_celsius(celsius_farhenheit(x)) == x 

Поскольку эта композиция дает identity function

Смежные вопросы