Um Ihr Problem zu beheben, müssen Sie eine Variable hinzufügen, die Ihnen sagen wird, ob die Nummer in der Spalte gefunden wurde, so dass die Nummer in der Zeile oder im Feld nicht überprüft werden muss.
So zu beheben, dass Ihr Code sollte wie folgt aussehen:
import turtle
strelica = turtle.getturtle()
turtle.setup(800, 600)
prozor = turtle.Screen()
prozor.title("SUDOKU")
strelica.speed(0)
def kvadrat(a): # a je duzina stranice
strelica.pendown()
strelica.forward(a)
strelica.left(90)
strelica.forward(a)
strelica.left(90)
strelica.forward(a)
strelica.left(90)
strelica.forward(a)
strelica.left(90)
def kucica(x, y):
strelica.penup()
strelica.setposition(x, y)
kvadrat(120)
strelica.setposition(x, y)
kvadrat(40)
strelica.setposition(x + 40, y)
kvadrat(40)
strelica.setposition(x + 80, y)
kvadrat(40)
strelica.penup()
strelica.setposition(x, y + 40)
strelica.pendown()
kvadrat(40)
strelica.setposition(x + 40, y + 40)
kvadrat(40)
strelica.setposition(x + 80, y + 40)
kvadrat(40)
strelica.penup()
strelica.setposition(x, y + 80)
strelica.pendown()
kvadrat(40)
strelica.setposition(x + 40, y + 80)
kvadrat(40)
strelica.setposition(x + 80, y + 80)
kvadrat(40)
strelica.pensize(3)
strelica.penup()
strelica.setposition(x, y)
strelica.pendown()
kvadrat(120)
strelica.pensize(0)
def unos(unos, x, y):
strelica.penup()
strelica.setposition(x, y)
strelica.write(unos, font=("Arial", 16, "normal"))
kucica(-200, -200)
kucica(-80, -200)
kucica(40, -200)
kucica(-200, -80)
kucica(-80, -80)
kucica(40, -80)
kucica(-200, 40)
kucica(-80, 40)
kucica(40, 40)
unos("A", -190, 175)
unos("B", -150, 175)
unos("C", -110, 175)
unos("D", -70, 175)
unos("E", -30, 175)
unos("F", 10, 175)
unos("G", 50, 175)
unos("H", 90, 175)
unos("I", 130, 175)
unos("9", -215, -190)
unos("8", -215, -150)
unos("7", -215, -110)
unos("6", -215, -70)
unos("5", -215, -30)
unos("4", -215, 10)
unos("3", -215, 50)
unos("2", -215, 90)
unos("1", -215, 130)
unos("5", -190, 130)
unos("3", -150, 130)
unos("7", -30, 130)
unos("6", -190, 90)
unos("1", -70, 90)
unos("9", -30, 90)
unos("5", 10, 90)
unos("9", -150, 50)
unos("8", -110, 50)
unos("6", 90, 50)
unos("8", -190, 10)
unos("6", -30, 10)
unos("3", 130, 10)
unos("4", -190, -30)
unos("8", -70, -30)
unos("3", 10, -30)
unos("1", 130, -30)
unos("7", -190, -70)
unos("2", -30, -70)
unos("6", 130, -70)
unos("6", -150, -110)
unos("2", 50, -110)
unos("8", 90, -110)
unos("4", -70, -150)
unos("1", -30, -150)
unos("9", 10, -150)
unos("5", 130, -150)
unos("8", -30, -190)
unos("7", 90, -190)
unos("9", 130, -190)
A = [5, 6, 8, 4, 7]
B = [3, 9, 6]
C = [8]
D = [1, 8, 4]
E = [7, 9, 6, 2, 1, 8]
F = [5, 3, 9]
G = [2]
H = [6, 8, 7]
I = [3, 1, 6, 5, 9]
red1 = [5, 3, 7]
red2 = [6, 1, 9, 5]
red3 = [9, 8, 6]
red4 = [8, 6, 3]
red5 = [4, 8, 3, 1]
red6 = [7, 2, 6]
red7 = [6, 2, 8]
red8 = [4, 1, 9, 5]
red9 = [8, 7, 9]
kucica1 = [5, 3, 6, 9, 8]
kucica2 = [7, 1, 9, 5]
kucica3 = [6]
kucica4 = [8, 4, 7]
kucica5 = [6, 8, 3, 2]
kucica6 = [3, 1, 6]
kucica7 = [6]
kucica8 = [4, 1, 9, 8]
kucica9 = [2, 8, 5, 7, 9]
a = len(A)
b = len(B)
c = len(C)
d = len(D)
e = len(E)
f = len(F)
g = len(G)
h = len(H)
i = len(I)
while (a != 9) or (b != 9) or (c != 9) or (d != 9) or (e != 9) or (f != 9) or (g != 9) or (h != 9) or (i != 9):
kolona = input("Unesite zeljenu kolonu od A do I: ")
red = int(input("Unesite zeljeni red od 1 do 9: "))
broj = int(input("Koji broj zelite unijeti? "))
error = False
if (kolona == "A") or (kolona == "a"):
if broj in A:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = -190
A.append(broj)
a += 1
elif (kolona == "B") or (kolona == "b"):
if broj in B:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = -150
B.append(broj)
b += 1
elif (kolona == "C") or (kolona == "c"):
if broj in C:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = -110
C.append(broj)
c += 1
elif (kolona == "D") or (kolona == "d"):
if broj in D:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = -70
D.append(broj)
d += 1
elif (kolona == "E") or (kolona == "e"):
if broj in E:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = -30
E.append(broj)
e += 1
elif (kolona == "F") or (kolona == "f"):
if broj in F:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = 10
F.append(broj)
f += 1
elif (kolona == "G") or (kolona == "g"):
if broj in G:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = 50
G.append(broj)
g += 1
elif (kolona == "H") or (kolona == "h"):
if broj in H:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = 90
H.append(broj)
h += 1
elif (kolona == "I") or (kolona == "i"):
if broj in I:
print("Greska: Broj vec postoji u datoj koloni!")
error = True
else:
x = 130
I.append(broj)
i += 1
if error == False:
if red == 1:
if broj in red1:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = 130
red1.append(broj)
elif red == 2:
if broj in red2:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = 90
red2.append(broj)
elif red == 3:
if broj in red3:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = 50
red3.append(broj)
elif red == 4:
if broj in red4:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = 10
red4.append(broj)
elif red == 5:
if broj in red5:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = -30
red5.append(broj)
elif red == 6:
if broj in red6:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = -70
red6.append(broj)
elif red == 7:
if broj in red7:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = -110
red7.append(broj)
elif red == 8:
if broj in red8:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = -150
red8.append(broj)
elif red == 9:
if broj in red9:
print("Greska: Broj vec postoji u datom redu!")
error = True
else:
y = -190
red9.append(broj)
if error == False:
if kolona == "A" or kolona == "a" or kolona == "B" or kolona == "b" or kolona == "C" or kolona == "c":
if red in [1, 2, 3]:
if broj in kucica1:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica1.append(broj)
elif red in [4, 5, 6]:
if broj in kucica4:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica4.append(broj)
elif red in [7, 8, 9]:
if broj in kucica7:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica7.append(broj)
if kolona == "D" or kolona == "d" or kolona == "E" or kolona == "e" or kolona == "F" or kolona == "f":
if red in [1, 2, 3]:
if broj in kucica2:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica2.append(broj)
elif red in [4, 5, 6]:
if broj in kucica5:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica5.append(broj)
elif red in [7, 8, 9]:
if broj in kucica8:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica8.append(broj)
if kolona == "G" or kolona == "g" or kolona == "H" or kolona == "h" or kolona == "I" or kolona == "i":
if red in [1, 2, 3]:
if broj in kucica3:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica3.append(broj)
elif red in [4, 5, 6]:
if broj in kucica6:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica6.append(broj)
elif red in [7, 8, 9]:
if broj in kucica9:
print("Greska: Broj vec postoji u datoj kucici!")
error = True
else:
kucica9.append(broj)
if error == False:
unos(broj, x, y)
strelica.setposition(-200, 200)
strelica.write("KRAJ IGRE!", font=("Arial", 32, "bold"))
turtle.exitonclick()
so, wenn die Variable error
True
ist dann rufen Sie nicht Funktion unos
.
Um den Code lesbarer zu machen (übrigens ist Ihr Code nicht einfach zu lesen, und viele davon sollten mit for loops und Funktionen gekürzt werden), sollten Sie die Funktion zum Ausdrucken der Fehlermeldung verwenden und True
zurückgeben so etwas wie dieses:
def print_error(error_message):
print(error_message)
return True
und ganze Code wäre:
import turtle
strelica = turtle.getturtle()
turtle.setup(800, 600)
prozor = turtle.Screen()
prozor.title("SUDOKU")
strelica.speed(0)
def kvadrat(a): # a je duzina stranice
strelica.pendown()
strelica.forward(a)
strelica.left(90)
strelica.forward(a)
strelica.left(90)
strelica.forward(a)
strelica.left(90)
strelica.forward(a)
strelica.left(90)
def kucica(x, y):
strelica.penup()
strelica.setposition(x, y)
kvadrat(120)
strelica.setposition(x, y)
kvadrat(40)
strelica.setposition(x + 40, y)
kvadrat(40)
strelica.setposition(x + 80, y)
kvadrat(40)
strelica.penup()
strelica.setposition(x, y + 40)
strelica.pendown()
kvadrat(40)
strelica.setposition(x + 40, y + 40)
kvadrat(40)
strelica.setposition(x + 80, y + 40)
kvadrat(40)
strelica.penup()
strelica.setposition(x, y + 80)
strelica.pendown()
kvadrat(40)
strelica.setposition(x + 40, y + 80)
kvadrat(40)
strelica.setposition(x + 80, y + 80)
kvadrat(40)
strelica.pensize(3)
strelica.penup()
strelica.setposition(x, y)
strelica.pendown()
kvadrat(120)
strelica.pensize(0)
def unos(unos, x, y):
strelica.penup()
strelica.setposition(x, y)
strelica.write(unos, font=("Arial", 16, "normal"))
def print_error(error_message):
print(error_message)
return True
kucica(-200, -200)
kucica(-80, -200)
kucica(40, -200)
kucica(-200, -80)
kucica(-80, -80)
kucica(40, -80)
kucica(-200, 40)
kucica(-80, 40)
kucica(40, 40)
unos("A", -190, 175)
unos("B", -150, 175)
unos("C", -110, 175)
unos("D", -70, 175)
unos("E", -30, 175)
unos("F", 10, 175)
unos("G", 50, 175)
unos("H", 90, 175)
unos("I", 130, 175)
unos("9", -215, -190)
unos("8", -215, -150)
unos("7", -215, -110)
unos("6", -215, -70)
unos("5", -215, -30)
unos("4", -215, 10)
unos("3", -215, 50)
unos("2", -215, 90)
unos("1", -215, 130)
unos("5", -190, 130)
unos("3", -150, 130)
unos("7", -30, 130)
unos("6", -190, 90)
unos("1", -70, 90)
unos("9", -30, 90)
unos("5", 10, 90)
unos("9", -150, 50)
unos("8", -110, 50)
unos("6", 90, 50)
unos("8", -190, 10)
unos("6", -30, 10)
unos("3", 130, 10)
unos("4", -190, -30)
unos("8", -70, -30)
unos("3", 10, -30)
unos("1", 130, -30)
unos("7", -190, -70)
unos("2", -30, -70)
unos("6", 130, -70)
unos("6", -150, -110)
unos("2", 50, -110)
unos("8", 90, -110)
unos("4", -70, -150)
unos("1", -30, -150)
unos("9", 10, -150)
unos("5", 130, -150)
unos("8", -30, -190)
unos("7", 90, -190)
unos("9", 130, -190)
A = [5, 6, 8, 4, 7]
B = [3, 9, 6]
C = [8]
D = [1, 8, 4]
E = [7, 9, 6, 2, 1, 8]
F = [5, 3, 9]
G = [2]
H = [6, 8, 7]
I = [3, 1, 6, 5, 9]
red1 = [5, 3, 7]
red2 = [6, 1, 9, 5]
red3 = [9, 8, 6]
red4 = [8, 6, 3]
red5 = [4, 8, 3, 1]
red6 = [7, 2, 6]
red7 = [6, 2, 8]
red8 = [4, 1, 9, 5]
red9 = [8, 7, 9]
kucica1 = [5, 3, 6, 9, 8]
kucica2 = [7, 1, 9, 5]
kucica3 = [6]
kucica4 = [8, 4, 7]
kucica5 = [6, 8, 3, 2]
kucica6 = [3, 1, 6]
kucica7 = [6]
kucica8 = [4, 1, 9, 8]
kucica9 = [2, 8, 5, 7, 9]
a = len(A)
b = len(B)
c = len(C)
d = len(D)
e = len(E)
f = len(F)
g = len(G)
h = len(H)
i = len(I)
while (a != 9) or (b != 9) or (c != 9) or (d != 9) or (e != 9) or (f != 9) or (g != 9) or (h != 9) or (i != 9):
kolona = input("Unesite zeljenu kolonu od A do I: ")
red = int(input("Unesite zeljeni red od 1 do 9: "))
broj = int(input("Koji broj zelite unijeti? "))
error = False
if (kolona == "A") or (kolona == "a"):
if broj in A:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -190
A.append(broj)
a += 1
elif (kolona == "B") or (kolona == "b"):
if broj in B:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -150
B.append(broj)
b += 1
elif (kolona == "C") or (kolona == "c"):
if broj in C:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -110
C.append(broj)
c += 1
elif (kolona == "D") or (kolona == "d"):
if broj in D:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -70
D.append(broj)
d += 1
elif (kolona == "E") or (kolona == "e"):
if broj in E:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -30
E.append(broj)
e += 1
elif (kolona == "F") or (kolona == "f"):
if broj in F:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 10
F.append(broj)
f += 1
elif (kolona == "G") or (kolona == "g"):
if broj in G:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 50
G.append(broj)
g += 1
elif (kolona == "H") or (kolona == "h"):
if broj in H:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 90
H.append(broj)
h += 1
elif (kolona == "I") or (kolona == "i"):
if broj in I:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 130
I.append(broj)
i += 1
if error == False:
if red == 1:
if broj in red1:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = 130
red1.append(broj)
elif red == 2:
if broj in red2:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = 90
red2.append(broj)
elif red == 3:
if broj in red3:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = 50
red3.append(broj)
elif red == 4:
if broj in red4:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = 10
red4.append(broj)
elif red == 5:
if broj in red5:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = -30
red5.append(broj)
elif red == 6:
if broj in red6:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = -70
red6.append(broj)
elif red == 7:
if broj in red7:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = -110
red7.append(broj)
elif red == 8:
if broj in red8:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = -150
red8.append(broj)
elif red == 9:
if broj in red9:
error = print_error("Greska: Broj vec postoji u datom redu!")
else:
y = -190
red9.append(broj)
if error == False:
if kolona == "A" or kolona == "a" or kolona == "B" or kolona == "b" or kolona == "C" or kolona == "c":
if red in [1, 2, 3]:
if broj in kucica1:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica1.append(broj)
elif red in [4, 5, 6]:
if broj in kucica4:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica4.append(broj)
elif red in [7, 8, 9]:
if broj in kucica7:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica7.append(broj)
if kolona == "D" or kolona == "d" or kolona == "E" or kolona == "e" or kolona == "F" or kolona == "f":
if red in [1, 2, 3]:
if broj in kucica2:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica2.append(broj)
elif red in [4, 5, 6]:
if broj in kucica5:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica5.append(broj)
elif red in [7, 8, 9]:
if broj in kucica8:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica8.append(broj)
if kolona == "G" or kolona == "g" or kolona == "H" or kolona == "h" or kolona == "I" or kolona == "i":
if red in [1, 2, 3]:
if broj in kucica3:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica3.append(broj)
elif red in [4, 5, 6]:
if broj in kucica6:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica6.append(broj)
elif red in [7, 8, 9]:
if broj in kucica9:
error = print_error("Greska: Broj vec postoji u datoj kucici!")
else:
kucica9.append(broj)
if error == False:
unos(broj, x, y)
strelica.setposition(-200, 200)
strelica.write("KRAJ IGRE!", font=("Arial", 32, "bold"))
turtle.exitonclick()
Code immer noch nicht schön ist, aber das ist Problem bei der Programmierung Sie für Schleifen (Ihre Variablen verwenden sollten, wo Sie speichern Informationen über Zeilen, Spalten a nd Boxen sollten in der Liste und dann sollten Sie prüfen, ob eingegebene Nummer in der Reihe unter Verwendung von für Schleife und ein solches vorhanden ist, wenn, und nicht mithilfe von neun ifs: zum Beispiel statt mit:
A = [5, 6, 8, 4, 7]
B = [3, 9, 6]
C = [8]
D = [1, 8, 4]
E = [7, 9, 6, 2, 1, 8]
F = [5, 3, 9]
G = [2]
H = [6, 8, 7]
I = [3, 1, 6, 5, 9]
Sie verwenden sollten:
columns = [[5, 6, 8, 4, 7], [3, 9, 6], [8], [1, 8, 4], [7, 9, 6, 2, 1, 8], [5, 3, 9], [2], [6, 8, 7], [3, 1, 6, 5, 9]]
und dann, wenn Sie überprüfen, ob eingegebene Nummer bereits in der Spalte ist anstelle der Verwendung:
if (kolona == "A") or (kolona == "a"):
if broj in A:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -190
A.append(broj)
a += 1
elif (kolona == "B") or (kolona == "b"):
if broj in B:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -150
B.append(broj)
b += 1
elif (kolona == "C") or (kolona == "c"):
if broj in C:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -110
C.append(broj)
c += 1
elif (kolona == "D") or (kolona == "d"):
if broj in D:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -70
D.append(broj)
d += 1
elif (kolona == "E") or (kolona == "e"):
if broj in E:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -30
E.append(broj)
e += 1
elif (kolona == "F") or (kolona == "f"):
if broj in F:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 10
F.append(broj)
f += 1
elif (kolona == "G") or (kolona == "g"):
if broj in G:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 50
G.append(broj)
g += 1
elif (kolona == "H") or (kolona == "h"):
if broj in H:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 90
H.append(broj)
h += 1
elif (kolona == "I") or (kolona == "i"):
if broj in I:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = 130
I.append(broj)
i += 1
Sie verwenden sollten:
i = ord(kolona.upper())-65 # upper() makes Capital Letters more at http://www.tutorialspoint.com/python/string_upper.htm
# ord() gives Unicode code of character more at https://docs.python.org/3/library/functions.html#ord
# -65 is used to make 65 in 0, 66 in 1 and so on
# idea is to get number 0 for 'A', 1 for 'B' 3 for 'D' and so on
if broj in columns[i]:
error = print_error("Greska: Broj vec postoji u datoj koloni!")
else:
x = -190
columns[i].append(broj)
a += 1
ähnliche Logik gilt für Zeilen und Boxen, wenn Sie Ihren Code verbessern möchten, sollten Sie etwas tun)
Auch Ihre Sudoku-Programm haben andere Probleme wie:. Sie können Eingabenummer Ort, wo Nummer existiert bereits, Sie können die eingegebene Nummer nicht löschen ...
PS: Wenn Sie irgendeinen Code verwenden möchten, schlage ich vor, Variablen umzubenennen, weil Ihr Code nicht auf Englisch ist.
Dies ist ein gutes Beispiel dafür, wie [Kopieren und Einfügen-Programmieren] (https://en.wikipedia.org/wiki/Copy_and_paste_programming) Ihren eigenen Code ruiniert. Tu es nicht! –