цикл Python в то время как преобразует темп

1

У меня есть этот код и вы хотите работать от 0 до ввода 28.3, но цикл останавливается на 25, потому что он увеличивается на 5. Как я могу получить последний цикл остановки в 28.3 (что то же, что и пользовательский ввод)

fah = 0

while(fah <= maxTemp):                          
    calcF = (fah-32)*5/9
    print("%10.2f | %6.2f" %(fah,calcF))
    fah+=5
  • 0
    Это больше вопрос решения проблем, чем программирование. Вы пробовали какие-либо изменения и получили результаты, которые не помогли бы вам определить, что делать?
Теги:
loops
while-loop

3 ответа

0
Лучший ответ

просто добавьте вычисление еще раз после цикла:

fah = 0
maxTemp = 28.3

while(fah < maxTemp):
    calcF = (fah-32)*5/9
    print("%10.2f | %6.2f" %(fah,calcF))
    fah+=5
calcF = (maxTemp-32)*5/9
print("%10.2f | %6.2f" %(maxTemp,calcF))

выход:

 0.00 | -17.78
 5.00 | -15.00
 0.00 | -12.22
15.00 |  -9.44
20.00 |  -6.67
25.00 |  -3.89
28.30 |  -2.06
  • 0
    спасибо большое, поставив расчет внизу сработало.
  • 0
    Это нарушает принцип СУХОГО
0

Способ 1

То, что вы пытаетесь сделать, это цикл do- while, который не поддерживается в Python. Вот как это сделать.

fah = 0
maxTemp = 28.3

while True:
    calcF = (fah-32)*5/9
    print("%10.2f | %6.2f" %(fah,calcF))
    fah+=5
    if (fah > maxTemp):
        break

Способ 2

Вместо fah < maxTemp вы можете выполнить сравнение fah < (maxTemp + interval) (где interval=5 в вашем случае).

fah = 0
maxTemp = 28.3
interval = 5

while fah < (maxTemp + interval):
    calcF = (fah-32)*5/9
    print("%10.2f | %6.2f" %(fah,calcF))
    fah+=interval

Способ 3

Вы также можете использовать цикл for с math.ceil(maxTemp)+interval на каждом интервале interval.

fah = 0
maxTemp = 28.3
interval = 5

for i in range(0, int(math.ceil(maxTemp)+interval), interval):
    calcF = (fah-32)*5/9
    print("%10.2f | %6.2f" %(fah,calcF))
0

Вы можете fah на 0,1, вместо 5

fah += 0.1

Это даст вам 50-кратный выход.

Из-за того, что вы выполняете цикл, выход никогда не будет содержать это окончательное значение 28.3, хотя, поскольку он увеличивается после печати. Это может быть исправлено вашим условием цикла (и несколькими путями).

maxTemp = 28.3
fah     = 0
step    = 0.1

while(fah <= (maxTemp + step)):
    calcF = (fah-32)*5/9
    print("%10.2f | %6.2f" %(fah,calcF))
    #fah += 5
    fah += step

Ещё вопросы

Сообщество Overcoder
Наверх
Меню