用python编写数独

2024-09-30 01:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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? "))

    if (kolona == "A") or (kolona == "a"):
        if broj in A:
            print("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:
            print("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:
            print("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:
            print("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:
            print("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:
            print("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:
            print("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:
            print("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:
            print("Greska: Broj vec postoji u datoj koloni!")
        else:
            x = 130
            I.append(broj)
            i += 1

    if red == 1:
        if broj in red1:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = 130
            red1.append(broj)
    elif red == 2:
        if broj in red2:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = 90
            red2.append(broj)
    elif red == 3:
        if broj in red3:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = 50
            red3.append(broj)
    elif red == 4:
        if broj in red4:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = 10
            red4.append(broj)
    elif red == 5:
        if broj in red5:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = -30
            red5.append(broj)
    elif red == 6:
        if broj in red6:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = -70
            red6.append(broj)
    elif red == 7:
        if broj in red7:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = -110
            red7.append(broj)
    elif red == 8:
        if broj in red8:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = -150
            red8.append(broj)
    elif red == 9:
        if broj in red9:
            print("Greska: Broj vec postoji u datom redu!")
        else:
            y = -190
            red9.append(broj)

    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!")
            else:
                kucica1.append(broj)
        elif red in [4, 5, 6]:
            if broj in kucica4:
                print("Greska: Broj vec postoji u datoj kucici!")
            else:
                kucica4.append(broj)
        elif red in [7, 8, 9]:
            if broj in kucica7:
                print("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:
                print("Greska: Broj vec postoji u datoj kucici!")
            else:
                kucica2.append(broj)
        elif red in [4, 5, 6]:
            if broj in kucica5:
                print("Greska: Broj vec postoji u datoj kucici!")
            else:
                kucica5.append(broj)
        elif red in [7, 8, 9]:
            if broj in kucica8:
                print("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:
                print("Greska: Broj vec postoji u datoj kucici!")
            else:
                kucica3.append(broj)
        elif red in [4, 5, 6]:
            if broj in kucica6:
                print("Greska: Broj vec postoji u datoj kucici!")
            else:
                kucica6.append(broj)
        elif red in [7, 8, 9]:
            if broj in kucica9:
                print("Greska: Broj vec postoji u datoj kucici!")
            else:
                kucica9.append(broj)

    unos(broj, x, y)

strelica.setposition(-200, 200)
strelica.write("KRAJ IGRE!", font=("Arial", 32, "bold"))

turtle.exitonclick()

嗨,伙计们,我是新来的编程,我有一个项目为我的学校。我必须用python做数独,这是我做的,但它还没有完成,它有一些错误,例如,如果它附加一列,然后它意识到这个数字已经在rove中,我不知道如何从列中删除它。 请帮忙


Tags: orinifelseprintelifappendvec
1条回答
网友
1楼 · 发布于 2024-09-30 01:30:23

为了解决您的问题,您需要添加一个变量,该变量将告诉您是否在列中找到了数字,所以不需要检查是在行还是框中的数字。在

因此,要修复代码应该如下所示:

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()

所以如果变量errorTrue,那么就不调用函数unos。在

为了使代码更具可读性(您的代码不容易阅读,并且应该通过使用for循环和函数来缩短代码的长度),您应该使用函数打印错误消息并返回True,它应该如下所示:

^{pr2}$

整个代码应该是:

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()

代码仍然不漂亮,但这是编程中的问题,您应该使用for循环(存储行、列和框信息的变量应该在list中,然后使用for循环和one if检查输入的数字是否存在于行中,而不是使用9个if: 例如,不要使用:

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]

您应该使用:

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]]

然后当您检查输入的数字是否已经在列中时,而不是使用:

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

您应该使用:

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

类似的逻辑适用于行和框,如果你想改进你的代码,你应该这样做。)

你的数独程序也有其他问题,比如:你可以在已经存在数字的地方输入数字,你不能删除输入的数字。。。在

注:如果你要使用我的任何代码,我建议你重命名变量,因为你的代码不是英文的。在

相关问题 更多 >

    热门问题