好吧所以几天前我几乎没有上过课,对我来说一切都是新的。 我想要做的是创造一些东西,将摄氏温度转换为华氏温度和开尔文,虽然它有点草率,但我已经完成了。
无论如何我的问题在于累加器。 当我总计所有摄氏度的总和时我得到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")
答案 0 :(得分:5)
问题是while
循环的输入条件是celsius < 21
。因此,当celsius
为20时,将输入while
循环,celsius
将增加到21,您的sum
值将会更改,现在循环已完成,因为celsius < 21
是False
。一种解决方案是只检查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的初始值是第一个计数。因此,在循环内部,您必须进行处理,然后递增计数器。