【发布时间】:2020-11-29 04:39:55
【问题描述】:
我正在尝试使用 for 循环对列表进行排序和比较,但我不断收到错误消息:
排序(lista[str(y+1)])
KeyError: '14454'
这是我的代码:
l = 0
k = 0
u = 0
lista = {}
sys.stdout = open("1.txt", "w")
for i in range(1,28):
for j in range(1,28):
for k in range(1,28):
a = float(i)
b = float(j)
c = float(k)
q = (a*b*c) / ((a+b+c)*(a+b+c)*(a+b+c))
if q > (1 / 81) and q < 1:
if a != b and b != c and c != a:
lista[str(l)] = [a,b,c]
l = l + 1
for x in range(l):
for y in range(l):
sorted(lista[str(x)])
sorted(lista[str(y+1)])
if lista[str(x)] == [str(y+1)]:
u = u + 1
sys.stdout.close()
【问题讨论】:
-
y+1wheny越过range(l)是错误的,因为它越过了最后一个元素。因此,您会得到 KeyError。我看到您的代码还有很多其他问题,但其中大多数与您的主要问题无关。总体而言,您要做什么? -
我认为通过在每次迭代中打印 y 的值来调试第二个嵌套循环可能有助于找到导致 KeyError 的 y 的确切值
-
感谢大家的帮助!我通过制作“for y in range(L-1)”修复了 KeyError,现在,我试图弄清楚为什么我不能打印变量“u”。 @UltraInstinct
标签: python list sorting range nested-for-loop