2014-06-23 28 views
-1

我有一個問題,在def checkit函數中返回False和附加數字。我不確定我是否錯誤地使用了checkrow功能。當給出正確解決的Sudoku難題時,它能夠返回true,但是當我們要調用一個不正確的Sudoku難題時,它會返回False,並提供有問題的行。目前,它只是返回有問題的行,也就是讓拼圖失敗的位置,但不包括錯誤。任何關於如何使它返回的想法?如何返回虛假和有問題的行(python數獨檢查器)

import sys 
from scanner import * 

def createList(size): 
    if size == 0: return [] 
    else: 
     return [0] + createList(size -1) 
def printGrid(gridlist): 
    for row in gridlist: 
     print (str(row)+"\n") 
def rows(g): 
    return len(g) 
def cols(g): 
    return len(g[0]) 

def printMatrix(g): 
    for i in range(0,rows(g),1): 
     for j in range(0,cols(g),1): 
      print(g[i][j],end=' ') 
     print('') 
    print('') 

def readinput(filename,grid): 
    s = Scanner(filename) 
    r = s.readtoken() 
    while r != "": 
     r = int(r) 
     c = s.readint() 
     v = s.readint() 
     grid[r][c]=v 
     r = s.readtoken() 

def checkRows(g): 
    for rows in g: 
     numbersInRow = [] 
     for number in rows: 
      if number != 0 and number in numbersInRow: 
       return g.index(rows) 
      else: 
       numbersInRow.append(number) 
    return True 
def checkIt(g): 
    checkRows(g) 
    rowSuccess = checkRows(g) 
    print(rowSuccess) 
def main(): 
    grid = createList(9) 
    for i in range(9): 
     grid[i] = createList(9) 
    readinput(sys.argv[1],grid) 
    printMatrix(grid) 
    checkIt(grid) 
main() 
+0

如何返回一個元組''返回False,g.index(rows)'? –

+0

@RubenBermudez對不起,並不意味着是忍者。要我刪除我的答案? – aIKid

+0

@aIKid沒問題:) –

回答

0

您可以返回他們兩個:

​​3210

,並閱讀它:

problematic_row, result = checkRows(g) 
0

return False, g.index(rows)將返回兩個值的元組。