Я делаю округленное целое число конверсии по Фаренгейту по Цельсию (да, для codeabbey.com), и я потратил несколько часов на это, чтобы застрять в чем-то, что похоже, что он должен работать плавно. В частности, мои результаты равны нулю. Итак, где-то в цикле for
, вероятно, в задании j
и k
, математика разрушается. Я смотрел на него снова и снова. Почему я получаю нули в своих результатах?Почему все мои результаты 0?
fahrenheit = raw_input().split() # Dump copy-and-pasted values into a list.
iter = int(fahrenheit.pop(0)) # Remove the first value and use it as a counter.
celsius = [] # Make an empty list for results.
x = 0 # Index counter
for i in fahrenheit:
j = (int(i)-32) * (5.0/9)
k = (int(i)-32) * (5/9)
if float(j) == k:
celsius.append(j)
elif j > 0: # For positive results
if (j - k) >= 0.5: # If integer value needs +1 to round up.
celsius.append(k+1)
else:
celsius.append(k)
elif j < 0: # For negative results
if (k - j) >= 0.5:
celsius.append(k+1) # If integer values needs +1 to bring it closer to 0.
else:
celsius.append(k)
else:
celsius.append(k) # If the result is 0.
print ' '.join(celsius)
Форматирование данных требует этой странной настройки. Первое число в данных не является температурой для тестирования. Все остальные. Таким образом, 5 80 -3 32 212 71
требует пяти вычислений: 80, -3, 32, 212 и 71 преобразован в Цельсий.
целочисленное деление: '5/9 == 0 ' –
... D'Oh! Я не могу поверить, что так долго смотрел на эту штуку и никогда не осознавал этого. Спасибо, что указали мне это! – thektulu7
Вы можете получить правильный результат, удалив круглые скобки вокруг '5/9'. Без них умножение на 5 произойдет до деления. – Blckknght