2015-09-24 3 views
2

Я довольно новичок в программировании и решил начать с Python в качестве своего входа в него. В любом случае, я не могу понять, почему этот сценарий преобразования температуры, который я написал, не работает.Простой преобразователь температуры Python

def convert_to_fahrenheit(celsius): 

    c = celsius 
    f = c * 9/5 + 32 
    print '%r Celsius, converted to Fahrenheit, is: %r Fahrenheit.' % c, f 


def convert_to_celsius(fahrenheit): 

    f = fahrenheit 
    c = (f - 32) * 5/9 
    print '%r Fahrenheit, converted to Celsius, is: %r Celsius.' % f, c 


def convert(): 

    print 'To convert a temperature from Celsius to Fahrenheit:' 
    cels = raw_input('CELSIUS: ') 
    print '' 
    convert_to_fahrenheit(cels) 

    print '' 
    print 'To convert a temperature from Fahrenheit to Celsius:' 
    fahr = raw_input('FAHRENHEIT: ') 
    convert_to_celsius(fahr) 


convert() 

Он возвращает TypeError:

Traceback (most recent call last): 
    File "C:/Users/Brandon/PycharmProjects/IntroTo/Ch1/Exercises.py", line 32,  in <module> 
    convert() 
    File "C:/Users/Brandon/PycharmProjects/IntroTo/Ch1/Exercises.py", line 24,  in convert 
    convert_to_fahrenheit(cels) 
    File "C:/Users/Brandon/PycharmProjects/IntroTo/Ch1/Exercises.py", line 8,  in convert_to_fahrenheit 
    f = c * 9/5 + 32 
TypeError: unsupported operand type(s) for /: 'str' and 'int' 
+0

Вы должны, вероятно, использовать исключения, которые вы получаете при запуске программы. И если у вас есть идея, где проблема, напишите об этом тоже. –

+1

Извините, я новичок. Я получаю «TypeError: неподдерживаемый тип операндов для /: 'str' и 'int'" – xponent

+1

Замечательно, что вы добавили больше информации о своем вопросе! Тем не менее, предпочтительный способ сделать это - отредактировать свой пост. –

ответ

1

Одна проблема заключается в том, что вы передаете и строка первых двух функций, но ожидать, что это будет поплавок. Вы можете решить эту проблему путем преобразования значения, которое вы получаете из строки в float. Вы должны сделать это

c = float(celcius) 

в первой функции и

f = float(farenheit) 

во втором.


Другой prblem является то, что вам нужно поставить скобки вокруг (c, f) и (f, c) для %, чтобы работать должным образом.


И еще одна вещь, которую вы, вероятно, хотите сделать, это спросить, хочет ли пользователь конвертировать для CEL далеко или наоборот. Вы можете сделать это, используя if:

def convert(): 

    user_input = raw_input('From what do you want to convert?: ') 

    if user_input == 'celsius': 
     print 'To convert a temperature from Celsius to Fahrenheit:' 
     cels = raw_input('CELSIUS: ') 
     convert_to_fahrenheit(cels) 

    elif user_input == 'farenheit': 
     print 'To convert a temperature from Fahrenheit to Celsius:' 
     fahr = raw_input('FAHRENHEIT: ') 
     convert_to_celsius(fahr) 
+0

Спасибо! Теперь он работает :) – xponent

+0

Чтобы быть еще более привлекательным, (OP), разрешите им вводить температуру с помощью единиц, например. «33 C», «-4,6 F». Затем проанализируйте устройство и вызовите соответствующую функцию преобразования. Только если они забыли блок, спросите их, для каких единиц? – smci

+0

@smci Да, было бы неплохо, но давайте оставим реализацию этого OP :) –

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