为什么这应该是while语句而不是if语句?

时间:2017-05-14 06:30:31

标签: loops if-statement while-loop statements

对班级进行了测试..他们提供了样本测试。其中一个问题给出了以下代码计算列表中项目的平均值,然后他们要求我们查找所有错误:

# brightness levels –maximum is 100
shape_brightness = [15,92,38,42] 
item_no = 0
total = 0
if (item_no < len(shape_brightness):
  total = shape_brightness[item_no]
  item_no = item_no + 1
  average = total / item_no
print(“The average brightness level is “+str(averge))

然而,在解决方案中,他们说最大的错误是它实际上应该是 while声明 ..我不明白为什么?关于为什么??

的任何解释

3 个答案:

答案 0 :(得分:1)

您需要迭代所有元素以计算平均值。 if语句只访问此数组中的第一个元素。

当您的代码访问shape_brightness[item_no]时,item_no是索引,因此它是0,shape_brightness[item_no]只是数字15.为了包含{{的所有其他值1}}在你的平均计算中,你也想要访问它们,所以要做到这一点,你可以使用循环增加你想要访问的元素数量的索引shape_brightness

while循环将是迭代所有元素的一种方式,将'if'更改为'while'将是对此代码的最快校正,但for循环(带有其他更改)也可以。 E.g。

item_no

在这种情况下,item_no计数器变得不必要了。

答案 1 :(得分:0)

简单:

因为你需要迭代一个数组。转换:你需要某种形式的循环!

如果声明没有此处需要重复部分!

答案 2 :(得分:0)

您需要使用while循环,因为要计算平均值的总和和数量。在添加所有值之前,需要重复添加形状亮度值。目前,您使用的if块仅考虑shape_brightness数组的第一个值。你需要把

    total = shape_brightness[item_no]
 item_no = item_no + 1

while圈内

while(item_no < len(shape_brightness))