回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我现在正在复习考试,教授给了我一个测试脚本。
这个问题涉及到Sodoku游戏;在这一节中,我必须将一行值的所有非零值作为一个集合返回到数独表(由2D数组表示)。在</p>
<pre><code>def get_values_from_row(puzzle, row):
rowVal = []
try:
for i in puzzle[row]:
if i != 0:
rowVal.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(i)
except IndexError:
print('Invalid Row')
if len(rowVal) == 0:
return rowVal
else:
rowVal = set(rowVal)
print(rowVal)
return(rowVal)
</code></pre>
<p>这是数独板</p>
^{pr2}$
<p>当我为第0行运行函数时,我得到了{1,2,3,4,5,6,7,8,9}。但是,当我运行测试脚本时,返回一个fail。在</p>
<p>以下是测试脚本中的相关代码:</p>
<pre><code>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]))
</code></pre>
<p><code>sg</code>正是我正在编辑的脚本导入的格式。当我查看日志时,<code>6</code>显然不在集合中,当我将其改为<code>3</code>时,发生了同样的事情。看起来不管测试值是什么,它都会从我返回的列表中删除</p>
<pre><code>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
</code></pre>
<p><strong>我的问题是:</strong>为什么AssertEqual返回false而它显然是真的?在</p>