AssertEqual 在 Observation 为 True 时返回 False
AssertEqual returning False when, from Observation is True
我现在正在复习考试,有教授给的试卷。
问题涉及数独游戏;在本节中,我要将return一行值的所有非零值以数独table(由二维数组表示)作为一个集合。
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)
这是数独板
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]]
当我 运行 第 0 行的函数时,我得到了预期的 {1,2,3,4,5,6,7,8,9}。但是,当我 运行 测试脚本 return 失败时。
这是测试脚本中的相关代码:
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
正是我正在编辑的脚本导入的内容。当我查看日志时,显然 6
不在集合中,当我将其更改为 3
时,同样的事情发生了。看起来无论测试值是多少,它都会从我的 returned 列表
中删除
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
我的问题是: 为什么 AssertEqual return 明明是真的却还是假的?
这可能是由于数据类型错误。 set([6]) 将给出一个 type() 集,而 sudoku1 是一个列表并包含列表
[6]==set([6])
会return假
函数的return值与[6]
不同,所以AssertEqual return false
sg.get_values_from_row(sudoku1, 0) = [5, 3, 4, 7, 8, 9, 1, 2]
不等于[6]
好的,所以我联系了我的教授,显然,测试代码不正确,它本来是要反转列表,以便列表中唯一的数字是在某种程度上被省略的行中的数字;我们都很好
我现在正在复习考试,有教授给的试卷。 问题涉及数独游戏;在本节中,我要将return一行值的所有非零值以数独table(由二维数组表示)作为一个集合。
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)
这是数独板
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]]
当我 运行 第 0 行的函数时,我得到了预期的 {1,2,3,4,5,6,7,8,9}。但是,当我 运行 测试脚本 return 失败时。
这是测试脚本中的相关代码:
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
正是我正在编辑的脚本导入的内容。当我查看日志时,显然 6
不在集合中,当我将其更改为 3
时,同样的事情发生了。看起来无论测试值是多少,它都会从我的 returned 列表
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
我的问题是: 为什么 AssertEqual return 明明是真的却还是假的?
这可能是由于数据类型错误。 set([6]) 将给出一个 type() 集,而 sudoku1 是一个列表并包含列表
[6]==set([6])
会return假
函数的return值与[6]
不同,所以AssertEqual return false
sg.get_values_from_row(sudoku1, 0) = [5, 3, 4, 7, 8, 9, 1, 2]
不等于[6]
好的,所以我联系了我的教授,显然,测试代码不正确,它本来是要反转列表,以便列表中唯一的数字是在某种程度上被省略的行中的数字;我们都很好