Python 内部有条件的循环bug
我试图循环一个列表并在一个变量上存储de max值,但是当我调试时,我发现一个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:
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):