Ich überarbeite gerade eine Prüfung, für die ein Testskript vom Professor gegeben wurde. Die Frage betrifft das Spiel Sodoku; In diesem Abschnitt muss ich alle Nicht-Null-Werte einer Reihe von Werten als Satz in die Sudoku-Tabelle (dargestellt durch ein 2D-Array) zurückgeben.AssertEqual returning False, wenn von Observation True ist
def get_values_from_row(puzzle, row):
rowVal = []
try:
for i in puzzle[row]:
if i != 0:
rowVal.append(i)
except IndexError:
print('Invalid Row')
if len(rowVal) == 0:
return rowVal
else:
rowVal = set(rowVal)
print(rowVal)
return(rowVal)
hier ist das Brett Sudoku
sudoku1 = [[5, 3, 4, 6, 7, 8, 9, 1, 2],
[6, 7, 2, 1, 9, 5, 3, 4, 8],
[1, 9, 8, 3, 4, 2, 5, 6, 7],
[8, 5, 9, 7, 6, 1, 4, 2, 3],
[4, 2, 6, 8, 5, 3, 7, 9, 1],
[7, 1, 3, 9, 2, 4, 8, 5, 6],
[9, 6, 1, 5, 3, 7, 2, 8, 4],
[2, 8, 7, 4, 1, 9, 6, 3, 5],
[3, 4, 5, 2, 8, 6, 1, 7, 9]]
Wenn ich die Funktion für Zeile 0 betreibe ich bekommen {1,2,3,4,5,6,7,8,9} wie erwartet . Wenn ich das Testskript ausführen, wird jedoch ein Fehler zurückgegeben.
Dies ist der entsprechende Code im Testskript:
import unittest
class Test(unittest.TestCase):
def test_get_values_from_row(self):
sudoku1 = [
[5, 3, 4, 0, 7, 8, 9, 1, 2],
[6, 7, 0, 0, 9, 5, 0, 4, 8],
[1, 9, 8, 0, 4, 0, 5, 6, 7],
[8, 5, 9, 7, 6, 1, 4, 2, 3],
[4, 2, 6, 8, 5, 3, 7, 9, 1],
[7, 1, 3, 0, 2, 4, 8, 5, 6],
[9, 6, 1, 5, 3, 7, 2, 8, 4],
[2, 8, 7, 4, 1, 9, 6, 3, 5],
[3, 4, 5, 2, 8, 6, 1, 7, 9]]
self.assertEqual(sg.get_values_from_row(sudoku1, 0), set([6]))
sg
ist genau das, was das Skript Ich bin der Bearbeitung als importiert. Wenn ich das Protokoll anschaue, scheint 6
nicht im Set zu sein, als ich es in 3
änderte, passierte dasselbe. Es sah aus wie auch immer der Testwert wurde wäre es aus meiner zurückgegebenen Liste
Traceback (most recent call last):'
File "question_1_iii_test.py", line 23, in test_get_values_from_row'
self.assertEqual(sg.get_values_from_row(sudoku1, 0), set([6]))'
AssertionError: Items in the first set but not the second:'
1
2
3
4
5
7
8
9
Items in the second set but not the first:
6
Meine Frage ist, gelöscht werden: Warum assertEqual falsch zurück, wenn es klar ist wahr?
Ich denke, deine Logik ist rückwärts, du fragst effektiv ist '{1, 2, 3, 4, 5, 7, 8, 9} == {6}', was eindeutig 'Falsch' ist . Willst du überprüfen, ob die Sets disjunkt sind? Oder möchten Sie wissen, ob es sich um eine Untermenge handelt? – AChampion
Nun, ich habe das Testskript nicht geschrieben; Das ist das Problem, das ich nicht verstehe, was genau AssertEqual zu tun versucht; Wenn es heißt: {1, 2, 3, 4, 5, 7, 8, 9} == {6} 'muss etwas mit dem Testskript nicht stimmen, oder? Denn was würde das sein, wenn die Frage eine ganze Reihe von Werten zurückgibt, nicht nur eine – Arkan
Sind Sie sicher, dass 'get_values_from_row()' die benutzten Werte und nicht die unbenutzten Werte zurückgeben soll - der Test scheint es zu implizieren soll die unbenutzten Werte zurückgeben. – AChampion