C'est le résultat du parcours i!=j Vous pouvez voir que lors du parcours vers i=1,j=3, la condition est remplie, count 1 , puis 1 et 3 sont supprimés de list_c.
Ensuite, comme deux chiffres ont été supprimés du début de list_c, les éléments du tableau sont avancés de deux chiffres et j dans la boucle suivante est égal à 6. Ensuite, i!=j à ce moment-là, et le nombre a changé en raison à la boucle précédente, il est devenu 1, donc la suppression sera toujours exécutée cette fois.
Et puisque 1 a été supprimé, list_c.remove(1) signalera une erreur.
a=18
list_c = list(range(1,a+1))
max = list_c[-1] + list_c[-2]
k=[]
for i in range(100):
if i**2<=max:
k.append(i**2)
count=0
for i in range(a-1,-1,-1):
if list_c[i] == 0:
continue
for j in range(0,a):
if list_c[j]==0:
continue
if list_c[i] != list_c[j]:
if list_c[i]+list_c[j] in k:
print("%s 和 %s配对" % (list_c[i],list_c[j]))
list_c[i]=0
list_c[j]=0
break
Frère, je vous suggère d'utiliser un meilleur IDLE. Au moins, il vous avertira si vous faites une erreur en écrivant le code, sinon ce genre d'erreur serait tellement ennuyeux
C'est le résultat du parcours i!=j Vous pouvez voir que lors du parcours vers i=1,j=3, la condition est remplie, count 1 , puis 1 et 3 sont supprimés de list_c.
Ensuite, comme deux chiffres ont été supprimés du début de list_c, les éléments du tableau sont avancés de deux chiffres et j dans la boucle suivante est égal à 6. Ensuite, i!=j à ce moment-là, et le nombre a changé en raison à la boucle précédente, il est devenu 1, donc la suppression sera toujours exécutée cette fois.
Et puisque 1 a été supprimé, list_c.remove(1) signalera une erreur.
Vous l'avez probablement écrit par erreur comme
count 1
.Frère, je vous suggère d'utiliser un meilleur IDLE. Au moins, il vous avertira si vous faites une erreur en écrivant le code, sinon ce genre d'erreur serait tellement ennuyeux
.