У меня есть этот код и вы хотите работать от 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
просто добавьте вычисление еще раз после цикла:
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
Способ 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))
Вы можете 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