目标是搜索给定列表并打印出最大值,但这只会抛出超出范围错误的列表索引
getShort_name()
答案 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))