Frage von Deniz97ify, 46

Fehlersuche im Programmcode?

Kann mir eventuell jemand bei nachfolgendem Code helfen, oder einen vergleichbaren Code für ein Sudoku auf Python-Basis zeigen? DIe Vorgabe ist lediglich, das es am Ende ein funktionierendes Sudoku ist, egal wie der Code dafür aussieht^^

Danke schonmal im Vorraus


def feld():
    feld[9][9] = ""
    feld = {{2,_,_, _,8,_, _,_,9},
            {_,4,_, _,7,_, _,8,_},
            {_,_,3, _,2,_, 1,_,_},
            ---------------------
            {_,_,_, 9,_,2, _,_,_},
            {1,7,5, _,_,_, 9,2,3},
            {_,_,_, 1,_,7, _,_,_},
            ---------------------
            {_,_,1, _,4,_, 7,_,_},
            {_,8,_, _,1,_, _,6,_},
            {6,_,_, _,9,_, _,_,5},}
#feld()
 
def sudoko(feld, x, y):
    for x in range(0,9):
        for y in range(0,9):
            print(feld[x][y])
            if (x % 3 == 2):
                print("\n")
                if (y % 3 == 2):
                    print("\n")
    print("--------------------")
#sudoko()
    
    
def pruefen(x, y, f , g ,h):
    if (feld[f][g]):
        return 0
    for x in range:
        if (h == feld[f][x]):
            return False
        if (h == feld[x][g]):
            return True

    if (x == f - f % 3):
            x = x + 1
    if(y == g - g%3):
        return range(y, y = y + 1)

    if (h == feld[x][y]):
        return False
    return True
#pruefen()

def versuch(a, x,b):
    while (x<=80) and (feld[x/9][x%9]):
        a = a + 1
    if (x == 81):
        return True
    for (x) in range(0,9):
        x = x + 1
    if (b == 80):
        return True
    else:
        return True

#versuch()
Antwort
von AnonYmus19941, 19

offenbar vermischst du python mit irgendeiner anderen programmiersprache.

lösungsansatz/gefundene fehler:

def feld():
feld = [["2","_","_", "_","8","_", "_","_","9"],##Fortsetzen für den Rest
[_,4,_, _,7,_, _,8,_],
[_,_,3, _,2,_, 1,_,_],
[_,_,_, 9,_,2, _,_,_],
[1,7,5, _,_,_, 9,2,3],
[_,_,_, 1,_,7, _,_,_],
[_,_,1, _,4,_, 7,_,_],
 [_,8,_, _,1,_, _,6,_],
 [6,_,_, _,9,_, _,_,5],]
#feld()
def sudoko(feld, x, y):
for x in range(0,9): ##fuer Schleifen verwendet man i, j, k
for y in range(0,9):
 print(feld[x][y])
print("\t")
if (y % 3 == 2):
print("|\t")
print("\n")
if (x % 3 == 2):
print("-----------------------")
#sudoko()
def pruefen(x, y, f , g ,h): ##verwende aussagekraeftige Variablennamen!!!
# if (feld[f][g]): ##das gibt immer 0 zurueck, wenn es das Feld gibt,
# return 0 ##ansonsten einen Fehler. der Rest wird nie ausgefuehrt
for x in range: ##ich weiß nicht richtig, was gemeint ist
if (h == feld[f][x]):
return False ##sobald das erste Mal ein return ausgeloest wird,
 if (h == feld[x][g]):
 return True ##wird die Funktion beendet. Da ich nicht weiß, was
##der Sinn dieser Funktion ist, kann ich nicht beurteilen, ob das so sein soll

if (x == f - f % 3):
x = x + 1
if(y == g - g%3):
return range(y, y = y + 1) ##siehe oben, außerdem: was soll das?

if (h == feld[x][y]):
return False
return True
#pruefen()
def versuch(a, x,b):
while (x<=80) and (feld[x/9][x%9]): ##Fehlermeldung oder True, siehe oben
##außerdem aendert sich x nie, daher Endlosschleife (in diesem Zustand)
a = a + 1
if (x == 81):
return True
for (x) in range(0,9): ##x = x + 9
x = x + 1
if (b == 80):
return True ##2 * return True?
else:
return True
#versuch()

es tut mir leid, aber dein code ist nicht sehr verständlich, und offenbar fehlen auch noch teile. ich will dir jetzt nicht dein komplettes programm schreiben (so war es aufwändig genug), aber du machst das korrigieren auch nicht leicht...

Keine passende Antwort gefunden?

Fragen Sie die Community