Ich versuche, ein Sudoku-Puzzle zu erstellen, so kam ich mit diesem Python-Code unten, der ein Wörterbuch, dessen Schlüssel aus der Btns-Liste ist, gedacht ist, aber wenn ausgeführt, wird der Code nicht abgeschlossen die Aufgabe und gibt auch keine Fehlermeldung. Ich brauche Hilfe, um zu entschlüsseln, was das Problem sein könnte und wie ich es beheben kann.Schleife nicht abgeschlossen Aufgabe
from random import randint
Btns = ['A11', 'A12', 'A13', 'A21', 'A22', 'A23', 'A31', 'A32', 'A33',
'B14', 'B15', 'B16', 'B24', 'B25', 'B26', 'B34', 'B35', 'B36',
'C17', 'C18', 'C19', 'C27', 'C28', 'C29', 'C37', 'C38', 'C39',
'D41', 'D42', 'D43', 'D51', 'D52', 'D53', 'D61', 'D62', 'D63',
'E44', 'E45', 'E46', 'E54', 'E55', 'E56', 'E64', 'E65', 'E66',
'F47', 'F48', 'F49', 'F57', 'F58', 'F59', 'F67', 'F68', 'F69',
'G71', 'G72', 'G73', 'G81', 'G82', 'G83', 'G91', 'G92', 'G93',
'H74', 'H75', 'H76', 'H84', 'H85', 'H86', 'H94', 'H95', 'H96',
'I77', 'I78', 'I79', 'I87', 'I88', 'I89', 'I97', 'I98', 'I99']
H1 = list(range(1,10))
H2 = list(range(1,10))
H3 = list(range(1,10))
H4 = list(range(1,10))
H5 = list(range(1,10))
H6 = list(range(1,10))
H7 = list(range(1,10))
H8 = list(range(1,10))
H9 = list(range(1,10))
V1 = list(range(1,10))
V2 = list(range(1,10))
V3 = list(range(1,10))
V4 = list(range(1,10))
V5 = list(range(1,10))
V6 = list(range(1,10))
V7 = list(range(1,10))
V8 = list(range(1,10))
V9 = list(range(1,10))
A = list(range(1,10))
B = list(range(1,10))
C = list(range(1,10))
D = list(range(1,10))
E = list(range(1,10))
F = list(range(1,10))
G = list(range(1,10))
H = list(range(1,10))
I = list(range(1,10))
the_game = {}
#iterating through Btns
for btns in Btns:
first = btns[0]
second = btns[1]
third = btns[2]
r = randint(1, 9)
#Assigning an array to first_list
if first == 'A':
first_list = A
elif first == 'B':
first_list = B
elif first == 'C':
first_list = C
elif first == 'D':
first_list = D
elif first == 'E':
first_list = E
elif first == 'F':
first_list = F
elif first == 'G':
first_list = G
elif first == 'H':
first_list = H
else:
first_list = I
#Assigning an array to second_list
if second == '1':
second_list = H1
elif second == '2':
second_list = H2
elif second == '3':
second_list = H3
elif second == '4':
second_list = H4
elif second == '5':
second_list = H5
elif second == '6':
second_list = H6
elif second == '7':
second_list = H7
elif second == '8':
second_list = H8
else:
second_list = H9
#Assigning an array to third_list
if third == '1':
third_list = V1
elif third == '2':
third_list = V2
elif third == '3':
third_list = V3
elif third == '4':
third_list = V4
elif third == '5':
third_list = V5
elif third == '6':
third_list = V6
elif third == '7':
third_list = V7
elif third == '8':
third_list = V8
else:
third_list = V9
#Making sure r is contained in the three lists
while (r not in first_list) or (r not in second_list) or (r not in third_list):
r = randint(1, 9)
print(r)
print(first_list)
print(second_list)
print(third_list)
the_game[btns] = r # Adding r to the dictionary
#Removing r from the three lists
first_list.remove(r)
second_list.remove(r)
third_list.remove(r)
print(the_game)
Denken Sie hart, wenn Sie so viele Duplikate mit so vielen Instanzvariablen benötigen. Sie können dies wahrscheinlich mit einem einzigen Array erreichen. – Ares
@Ekene, willkommen zu Stack Overflow! Sie haben eine "Endlosschleife" in Ihrem Code. Aufgabe ist herauszufinden, ob es sich um die externe "for" oder die interne "while" Schleife handelt. Ich schlage vor, dass Sie Ihren Versuch verkleinern. Erstens, tue es für ein 9-Elemente-Btns-Array; dann mach es für die ursprünglichen 81 Elemente. Das ist Dijkstras Ansatz, sich bei der Arbeit zu teilen. Ich hoffe es hilft. Schöne Codierung! – ranieribt