Python while循环添加错误

时间:2014-07-07 18:52:28

标签: python loops while-loop

好吧所以几天前我几乎没有上过课,对我来说一切都是新的。 我想要做的是创造一些东西,将摄氏温度转换为华氏温度和开尔文,虽然它有点草率,但我已经完成了。

无论如何我的问题在于累加器。 当我总计所有摄氏度的总和时我得到231当它应该是210。 它添加了21来自"而摄氏度< 21。

任何人都可以帮我弄清楚如何获得正确的数字:/? 谢谢!

print ("Celsius Conversion Chart")


sum = 0
sum1 = 0
sum2 = 0
celsius = 0

while celsius < 21:
    print (str(celsius)+'°C ' + ' = ' + str(celsius*9/5+32)+'°F ' + ' = ' + str(celsius +273.15)+'°K')
    celsius += 1
    sum = sum + celsius
    sum1 = sum1 + (celsius * 9/5 + 32)
    sum2= sum2 + (celsius + 273.15)

print (str(sum1)+'°F')
print (str(sum2)+'°K')
print (str(sum)+'°C')

if celsius < 100:
    print ("WARNING: temperature is too high")

3 个答案:

答案 0 :(得分:5)

问题是while循环的输入条件是celsius < 21。因此,当celsius为20时,将输入while循环,celsius将增加到21,您的sum值将会更改,现在循环已完成,因为celsius < 21False。一种解决方案是只检查celsius < 20

演示正在发生的事情:

# python interpreter
>>> x = 0
>>> while x < 3:
...    x += 1
...    print(x)
... 
1
2
3

答案 1 :(得分:3)

将您的摄氏度+ = 1行移至总和更新以下。这将解决这个特殊问题。

您的警告应该是摄氏度&gt; 100,不是摄氏度&lt; 100。

另外,你应该使用sum1,sum2和sum3,因为&#34; sum&#34;是一个保留字。

答案 2 :(得分:0)

我无法发表评论,所以发布了答案......

凯文提到移动柜台。我在while循环中添加,循环内的计数器应始终在使用计数器的所有处理之后。这适用于支持while循环的任何语言,即它是while循环的完成方式,而不是特定于python。

所以这不是一个糟糕的进入条件。基本上,设置Celsius = 0的初始值是第一个计数。因此,在循环内部,您必须进行处理,然后递增计数器。