2013-11-01 2 views
0

У меня попробовал, чтобы сделать калькулятор преобразования температуры в python. Любая помощь в том, что не так? Я положил 20C, и это говорит мне, что 20c=52f, что я знаю, является неправильным. Вот код:Калькулятор температуры не выводит правильную температуру?

def convert(changeto,temp): 
    if changeto == "c": 
     converted = (5/9)*(temp-32) 
     print '%d C = %d F' % (temp,converted) 
    elif changeto == "f": 
     converted = (9/5)*(temp+32) 
     print '%d F = %d C' % (temp, converted) 
    else: 
     print "Error, type C or F for Celsius or Fahrenheit conversions." 

print "Temperature Converter" 

temp = float(raw_input("Enter a temperature: ")) 
changeto = str(raw_input("Convert to (F)ahrenheit or (C)elsius? ")) 

convert(changeto,temp) 

raw_input("Any key to exit") 
+0

9/5 всегда 1 .... попробуйте 9/5.0 вместо –

+1

В дополнение к полученной плавающей запятой, вы добавляете 32 до умножения при переходе от C к f. Это должно быть '(9/5.0 * temp) + 32'. (Или '9/5.', но мне нравится явное' 0' в качестве напоминания.) Или, если вам нужна целая математика (усечение любой десятичной части), '((9 * temp)/5) + 32' и '(5 * (temp - 32))/9'. Parens добавил для ясности. –

+0

@PeterDeGlopper Спасибо! Это исправило это. Я просто скопировал формулу, которую я нашел на веб-сайте проблемы начинающего питона, и не думал дважды о своей математике. Лень снова укусила меня в задницу, хорошо. – Ace

ответ

3

В зависимости от используемой версии Python, 5/9 вероятно, имеет значение ноль. Измените его на 5./9 (точка превращает 5 в литерал floating-point).

То же самое касается другого подразделения.

Кроме того, две формулы, которые у вас есть, не являются обратными друг другу и нуждаются в повторном рассмотрении.

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