Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
'for loop' exit at first passage
-
UPDATED
@mibradoc output:
grille à résoudre ? libre [[1 4 0 0 7 0 9 2 0] [3 0 0 0 0 2 8 5 4] [0 0 0 0 5 0 6 0 7] [0 0 0 2 0 0 0 7 0] [9 0 6 0 0 0 4 0 1] [0 5 0 0 0 6 0 0 0] [0 0 9 0 6 0 0 0 0] [5 3 0 7 0 0 0 0 8] [0 8 0 0 2 0 0 3 9]] 50 (1, 1) [3, 4] 2 0 1 2 (3, 2) [3, 5] 0 0 1 2 (5, 4) [3, 5] 3 3 4 5 (7, 5) [0, 2] 4 3 4 5 (9, 3) [4, 5] 5 3 4 5 (3, 4) [3, 4] 3 3 4 5 (8, 0) [3, 5] 2 0 1 2 (8, 0) [3, 5] 2 0 1 2 [[1 4 3 0 7 0 9 2 3] [3 0 0 0 0 2 8 5 4] [0 0 0 0 5 0 6 1 7] [0 0 5 2 3 5 3 7 0] [9 7 6 0 0 7 4 0 1] [0 5 0 0 0 6 0 9 0] [0 0 9 0 6 0 0 0 0] [5 3 0 7 0 0 0 0 8] [0 8 0 0 2 0 0 3 9]] 40 3
-
@mibradoc run gives an error
grille à résoudre ? libre [[1 4 0 0 7 0 9 2 0] [3 0 0 0 0 2 8 5 4] [0 0 0 0 5 0 6 0 7] [0 0 0 2 0 0 0 7 0] [9 0 6 0 0 0 4 0 1] [0 5 0 0 0 6 0 0 0] [0 0 9 0 6 0 0 0 0] [5 3 0 7 0 0 0 0 8] [0 8 0 0 2 0 0 3 9]] 50 (1, 1) [3, 4] 2 0 Traceback (most recent call last): File "/private/var/mobile/Containers/Shared/AppGroup/668A7D98-7216-47ED-917D-AA0B6173167E/Pythonista3/Documents/aa.py", line 147, in <module> for colonne in range((numero_carre_sans_chiffre % 3)*3,(numero_carre_sans_chiffre % 3)*3 + 3) : NameError: name 'numero_carre_sans_chiffre' is not defined
-
@stephen did you change code?
-
@mibradoc you say
"The for loop is line # 141
using breakpoint you 'll see the jump to line 147 after the first print "but line 147 is still in the loop, due to its indentation
-
@cvp yes im sorry, didnt realize it didnt paste in
I CHANGED:
for colonne in range((
numero_carre% 3)*3,(
numero_carre% 3)*3 + 3) :
#colonnes_possibles=[]
⇒colonnes_possibles=[]
not sure what expected outcome isnexpected tho
for numero_carre in range ( (numcarre_altex // 3) * 3,((numcarre_altex//3)*3) + 3 ) : print (numero_carre) # BUG !! sortie de la boucle for après le 1er passage !! #if numero_carre != numcarre_altex and key[0] not in carrint(numero_carre) : #numero_carre_sans_chiffre = numero_carre colonnes_possibles=[] for colonne in range((numero_carre % 3)*3,(numero_carre % 3)*3 + 3) : if puzzle[ ligne_a_analyser , colonne ] == 0 and key[0] not in puzzle[:9,colonne]: colonnes_possibles.append(colonne) if len(colonnes_possibles) == 1 : fn_remplir_case ( ligne_a_analyser , colonnes_possibles[0] , key[0] ) #print() #print (puzzle) #print ()
-
@stephen understood, we will wait on réaction about my last post.
-
@cvp this feels more like what hes probably looking for? comented out
print (numero_carre)
on line 143grille à résoudre ? libre [[1 4 0 0 7 0 9 2 0] [3 0 0 0 0 2 8 5 4] [0 0 0 0 5 0 6 0 7] [0 0 0 2 0 0 0 7 0] [9 0 6 0 0 0 4 0 1] [0 5 0 0 0 6 0 0 0] [0 0 9 0 6 0 0 0 0] [5 3 0 7 0 0 0 0 8] [0 8 0 0 2 0 0 3 9]] 50 (1, 1) [3, 4] 2 (3, 2) [3, 5] 0 (5, 4) [3, 5] 3 (7, 5) [0, 2] 4 (9, 3) [4, 5] 5 (3, 4) [3, 4] 3 (8, 0) [3, 5] 2 (8, 0) [3, 5] 2 [[1 4 3 0 7 0 9 2 3] [3 0 0 0 0 2 8 5 4] [0 0 0 0 5 0 6 1 7] [0 0 5 2 3 5 3 7 0] [9 7 6 0 0 7 4 0 1] [0 5 0 0 0 6 0 9 0] [0 0 9 0 6 0 0 0 0] [5 3 0 7 0 0 0 0 8] [0 8 0 0 2 0 0 3 9]] 40 3
-
-
That 's correct, line 147 is still in the loop. But I 've commented lines 143 and 144 because the nameError and insert line 142 in order to debug. I don't need this print line in my script.
If you uncomment 143 and 144 and if the loop works fine, the name error would dissapear.
Wich version of Pythonista do you use? Mine is 3.3 -
@mibradoc Pythonista 3.3 too
You need also to uncomment 146 -
This
for numero_carre in range ( (numcarre_altex // 3) * 3,((numcarre_altex//3)*3) + 3 ) : print ('x:',numero_carre) # BUG !! sortie de la boucle for après le 1er passage !! if numero_carre != numcarre_altex and key[0] not in carrint(numero_carre) : numero_carre_sans_chiffre = numero_carre colonnes_possibles=[] for colonne in range((numero_carre_sans_chiffre % 3)*3,(numero_carre_sans_chiffre % 3)*3 + 3) :
also crashes with
grille à résoudre ? libre [[1 4 0 0 7 0 9 2 0] [3 0 0 0 0 2 8 5 4] [0 0 0 0 5 0 6 0 7] [0 0 0 2 0 0 0 7 0] [9 0 6 0 0 0 4 0 1] [0 5 0 0 0 6 0 0 0] [0 0 9 0 6 0 0 0 0] [5 3 0 7 0 0 0 0 8] [0 8 0 0 2 0 0 3 9]] 50 (1, 1) [3, 4] 2 x: 0 Traceback (most recent call last): File "/private/var/mobile/Containers/Shared/AppGroup/668A7D98-7216-47ED-917D-AA0B6173167E/Pythonista3/Documents/aa.py", line 147, in <module> for colonne in range((numero_carre_sans_chiffre % 3)*3,(numero_carre_sans_chiffre % 3)*3 + 3) : NameError: name 'numero_carre_sans_chiffre' is not defined
-
Your loop on colonne uses numero_carre_sans_chiffre which is only defined in a if.
Are sure you don't need to indent more this loop?
if numero_carre != numcarre_altex and key[0] not in carrint(numero_carre) : numero_carre_sans_chiffre = numero_carre colonnes_possibles=[] for colonne in range((numero_carre_sans_chiffre % 3)*3,(numero_carre_sans_chiffre % 3)*3 + 3) :
-
-
@mibradoc As we have made some changes in your code to let it run without name error, I'm not sure we use exactly the same code.
I also have an iPad (Mini 4) and I don't think comes from that.
Could you post a code which runs without name error on your device but which stops after one loop -
-
@cvp i beleive the error is the issue originaly. i say this only because it raises after one pass of for loop
-
@stephen it is possible but as you have also changed some lines (comment, loop on colonne indentation), I just want to be sure that he and us try exactly the same code.
-
The code on Dropbox stops after one loop. Whith a breakpoint on line 141 and then step by step you will see that the loop is executed only one time, not three as expected. The name error comes because the bypass over the lines 143 and 144 where the variable 'numero_carre_sans_chiffre' is assigned.
-
@mibradoc yes, but as the name error occurs in the loop, it is normal the loop is stopped, isn'it?
-
@stephen Thanks for the translation.