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

Why should this be a while statement and not an if statement?

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

# 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 语句 .. 我不明白为什么?关于为什么的任何解释??

简单:

因为你需要迭代一个数组。也就是说:你需要某种形式的循环!

而且 if 语句在这里不需要 重复 部分!

您需要使用 while 循环,因为要计算平均值的总和和值的个数。您需要重复添加形状亮度的值,直到添加完所有值。目前,您正在使用 if 块,它只考虑 shape_brightness 数组的第一个值。您需要输入

    total = shape_brightness[item_no]
 item_no = item_no + 1

while 循环内

while(item_no < len(shape_brightness))

您需要遍历所有元素来计算平均值。 if 语句仅访问此数组中的第一个元素。

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

while 循环是遍历所有元素的一种方法,将 'if' 更改为 'while' 将是对此代码的最快修正,但是 for 循环需要额外的更改,也会工作。例如

for item in range(len(shape_brightness)):
    execute

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