2016-08-29 6 views
0

Я пишу температурный преобразователь для удовольствия, и все, кажется, работает, но я получаю сообщение 'TypeError: Can not convert' float 'to str implicitly'. Из того, что я могу сказать, я преобразовываю его в строку после факта, может ли кто-нибудь сказать мне, что я делаю неправильно?Python Float to String TypeError

Я смотрел этот этот вопрос ранее "Can't convert 'float' object to str implicitly"

def tempconverter(startType,Temp): 
    #conversion types: c -> f c-> K , f -> c, f -> k, k -> c, k -> f 
    # maybe have them select only their beginning type then show 
    # all temp types by that temperature 

if startType[0].lower() == 'c': 
    return ('Your temperature ' + Temp +'\n' 
      + 'Farenheight: ' + ((int(Temp)*9)/5)+32 + '\n' 
      + 'Kelvin: ' + str((Temp+ 273.15)) ## I get the error here ## 
      ) 
elif startType[0].lower() == 'f': 
    #commented out until first is fixed 
    #return ((int(Temp)-32)*5)/9 
    return Temp 
elif startType[0].lower() == 'k': 
    return Temp 

print('Welcome to our temperature converter program.') 
print('''Please enter your temperature type: 
     C = Celsius 
     F = Farenheight 
     K = Kelvin''') 
sType = input('> ') 

print('Please enter the temperature you wish to convert.') 
sTemp = input('> ') 

print(tempconverter(sType,sTemp)) 
+0

Для форматирования вы должны использовать% s и% i escapes. Выглядит чище, и я готов поспорить, что ваша проблема будет легче справиться с проблемой, если не исправить ее. – Angus

+1

@Angus: Я бы не рекомендовал этого; автоматическое округление '% i', как правило, вызывает больше путаницы, чем того стоит. Я бы рекомендовал придерживаться метода 'format', или'% s' для всего. – user2357112

+0

Я буду изучать использование форматирования строк, вероятно, я должен был использовать это, но этот способ казался менее сложным? У меня действительно нет оправдания, чтобы этого не сделать. –

ответ

2

В строке кода:

+ 'Kelvin: ' + str((Temp+ 273.15)) ## I get the error here ## 

Ошибка вызвана этой его части:

Temp+ 273.15 

Temp является строкой. Вы не можете добавить строку и число вместе.

+0

Я попробовал преобразование int() раньше, и это не сработало .. черт возьми, хорошо, спасибо! который зафиксировал это. Теперь я собираюсь преобразовать это в форматирование строки –

1

В этом расчете:

((int(Temp)*9)/5)+32 

Вы не преобразовывая свой результат str.

Кроме того, вы неправильно указали «Фаренгейт».

+0

Это не строка кода, на которой его ошибка? Также я знаю, что это неправильно. –

+0

_That is not the line of code его error on_ Возможно, вы хотели бы сообщить нам, в какой строке кода это ошибка _is_? –

+0

Его в моем коде выше .. + 'Kelvin:' + str ((Temp + 273.15)) ## Я получаю ошибку здесь ## –