цикл Python в то время как преобразует темп - PullRequest
0 голосов
/ 15 октября 2018

У меня есть этот код, и я хочу запустить от 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

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

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

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 голосов
/ 15 октября 2018

Метод 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 голосов
/ 15 октября 2018

Вы можете увеличить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...