使用for循环打印最大项目时出现列表错误

时间:2019-06-21 09:15:13

标签: python-3.x

目标是搜索给定列表并打印出最大值,但这只会抛出超出范围错误的列表索引

getShort_name()

3 个答案:

答案 0 :(得分:0)

错误在内部循环中:for j in range(1, len(a) +1):

删除它会删除错误:

a = [1, 2, 3, 42, 51, 12, 76, 22]

max = a[0]

for i in range(0, len(a)):
    for j in range(1, len(a) ):
        if a[j] > a[i]:
            max = a[j]

print(max)
# 76

结果: 您定义的功能不起作用,因为您将每个元素彼此进行了比较。您需要将它们与当前的max值进行比较。 示例不起作用:

a = [76 ,1, 2, 3, 42, 51, 12, 22 ]

max_ = a[0]

for i in range(0, len(a)):
    for j in range(0, len(a) ):
        if a[j] > a[i]:
            max_ = a[j]
print(max_)
# 51

这是一个简单的可行解决方案:

a = [76 ,1, 2, 3, 422, 51, 12, 22,99 ]
# Init max
max_ = a[0]
for elt in a[1:]:
    if elt > max_:
        max_ = elt
print(max_)
# 422

如果要检查结果,请执行以下操作:

print(max(a))
#  422

答案 1 :(得分:0)

您的内循环结束得太晚了。但是根本不需要嵌套循环。足够的模式是:

mx = a[0]  # do not shadow built-in function

for i in range(1, len(a)):
    if a[i] > mx:
        mx = a[i]
print(mx)

答案 2 :(得分:0)

您为什么要使用循环来解决此问题?获得结果的最快方法是使用max函数。

像这样:

a = [1, 2, 3 ,42 ,51,12,76,22]
print(max(a))