Python 内部有条件的循环bug

Python 内部有条件的循环bug,python,Python,我试图循环一个列表并在一个变量上存储de max值,但是当我调试时,我发现一个bug不能很好地存储最大值 walls = [0, 1, 0, 2, 1, 0, 3, 2, 1, 1, 1, 5, 0, 2] def snow_stored_cuadratic(walls): max_height = 0 for wall in walls: value = walls[wall] if value > max_height:

我试图循环一个列表并在一个变量上存储de max值,但是当我调试时,我发现一个bug不能很好地存储最大值

walls = [0, 1, 0, 2, 1, 0, 3, 2, 1, 1, 1, 5, 0, 2]

def snow_stored_cuadratic(walls):
    max_height = 0

    for wall in walls:
        value = walls[wall]
        if value > max_height:
            max_height = value
    return max_height     
当我转到第四个值,即2,并且我将值1存储在变量值中时,用于比较值>最大高度的If语句会被数字2卡住。

请注意,墙不是索引,它是列表中的一个元素

而不是值和此表达式:

value = walls[wall]
用墙就行了

而且,不需要使用循环,可以使用max函数

max_height = max(walls)

在循环每个元素时,不需要编写索引。wall在每次迭代中将为0,1,0,…,0,2,因此无需将其作为索引写入

有一个内置函数max

printmaxwalls 您不需要执行value=walls[wall],wall表示列表中的一个元素,而不是索引

对于墙中墙: 如果墙>最大高度: 最大高度=墙壁 返回最大高度
似乎您正试图从列表中获取最大值。 不要使用您的函数,尝试只使用将从墙列表返回最大值的函数

这将打印:

5
当迭代时,上面一行中的墙获取列表中的元素。 所以,如果您希望它作为列表的索引值,您应该使用它作为

for wall, ele in enumerate(walls):
通过使用enumerate,您可以获得wall中的索引值和ele中的每个元素。将代码与enumerate一起使用,效果很好

5
for wall in walls:
for wall, ele in enumerate(walls):