Игра Судоку на Питоне - PullRequest
       10

Игра Судоку на Питоне

0 голосов
/ 11 октября 2019

Мне нужна помощь с моим кодом. Я знаю, как запустить доску, но я не знаю, как проверить, повторяются ли числа в строках и столбцах, и как это изменить.

Списки, матрицы, для циклов

import turtle
import random
import time

board = [                        #Initialize board.
            ["X","X","X","X"],
            ["X","X","X","X"],
            ["X","X","X","X"],
            ["X","X","X","X"]
            ]

values = ["0","1","2","3"]      #Accepted values

def sudoku():
    #Start screen
    print("SUDOKU".center(50,"-"))
    print("Rules")                #To be changed later c:
    start = int(input("Type 1 to start."))
    crearTablero()
    checkDuplicates()

def createBoard():
    for row in range(len(board)):
        if row%2 == 0:
            board[row][0] = random.sample(values,1)
            board[row][2] = random.sample(values,1)

        if row%2 == 1:
            board[row][1] = random.sample(values,1)
            board[row][3] = random.sample(values,1)

        print(board[row])

def checkDuplicates():                  #Check for duplicates while creating 
    for column in range(len(board[0])):
        #Tried to check if a number has been used in the column, change it to a new number
        val = [x for x in val]          
        for i in range(4):
            while board[columna][0] != board[columna][i]:
                celda = board[columna][i]
                celda = random.sample(valores,1)
                celdastr = "".join(celda)
                check = val.index(celdastr) #I'm stuck here. I get ValueError when trying to delete the used number from val.
                if check != "-1":
                    val.remove(check)

#I still have to create functions to enter the answer, check it and check if the board is full

sudoku()

Я получаю ValueError при попытке удалить из списка значений, и числа не меняются: (.

Traceback (последний вызов был последним): файл "sudoku.py", строка 54, в sudoku () Файл "sudoku.py", строка 21, в sudoku checarDuplicado () файл "sudoku.py", строка52, в checarDuplicado val.remove (проверка) ValueError: list.remove (x): x отсутствует в списке

1 Ответ

0 голосов
/ 12 октября 2019

Если вы уменьшите свой пример до минимальной формы, вы обнаружите, что это так:

val = ["a"]
celdastr = "b"
check = val.index(celdastr)
if check != "-1":
    val.remove(celdastr)

и что основная причина вашей проблемы check != "-1".

list.index(item) функция возвращает целочисленные индексы, а не строки - вам нужно вместо check != -1.

...