我的任务是打印给定自然数n的*钻石。行数等于2n,列数等于2n +2。我不需要帮助完成这段代码,而是需要帮助弄清楚当前代码中的错误。
import check
def acc_fn(rows,stars,columns):
if rows > 2:
print(stars + '-' * (columns - rows -1) + ('*' * rows) + '-' * \
(columns - rows -1))
return acc_fn(rows -2 , stars, columns -1)
else:
print(stars + '-' * (columns - rows -1) + ('*' * rows) + '-' * \
(columns - rows -1))
def printdiamond (n):
return acc_fn(2*n,'', 2*n +2)
check.set_screen( "-**********-\n-**********-\n--********--\n---******---\
\n----****----\n-----**-----")
check.expect("Q3T1", printdiamond(5), None)
那应该输出什么?
-**********-
--********--
---******---
----****----
-----**-----
现在输出什么:
-**********-
--********--
---******---
----****----
-----**-----
-----
问题似乎与打印线有关,但我无法确定这一点。我也意识到这不是钻石,但是确定此错误后的下一个原因是钻石的上半部分。我对如何执行此操作有一个想法,因此不需要帮助。
答案 0 :(得分:0)
我只是想发布这个信息,以防有人遇到类似的问题,或者像我一样困惑。这里发生的事情是对该模块结构的误解。检查模块有助于测试您的代码。 Check.set_screen接受输入,这是check.expect测试的预期打印结果。但是,期望检查模块会测试该函数返回的内容。之所以在菱形末尾有额外的-----行,是因为每个check.set_screen和check Expect测试集都以该打印行结束,以指示打印输出的结束。