我在 python 中打印钻石代码的问题



我的任务是打印一颗由*制成的钻石,给定一个自然数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) 

那么应该输出什么:

-**********-
--********--
---******---                 
----****----
-----**-----

现在输出的内容:

-**********-
--********--
---******---
----****----
-----**-----
-----

问题似乎出在打印线上,但我无法确定它。我也意识到这不是钻石,但我确定这个错误后的下一个可能是由于钻石的上半部分。我对如何做到这一点有一个想法,所以我不需要帮助。

我只是想发布这个,以防有人遇到类似的问题,或者更确切地说,和我一样困惑。这里发生的事情是对这个模块结构的误解。检查模块有助于测试代码。Check.set_screen 接受一个输入,这是 check.expect 测试的预期打印结果。但是,检查期望模块测试函数返回的内容。之所以在菱形的末尾,多了一行-----,,是因为每个check.set_screen和检查期望测试集都以这条打印线结尾,以指示打印输出的结束。

最新更新