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

时间:2018-10-22 18:46:35

标签: python python-3.x

我的任务是打印给定自然数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) 

那应该输出什么?

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

现在输出什么:

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

问题似乎与打印线有关,但我无法确定这一点。我也意识到这不是钻石,但是确定此错误后的下一个原因是钻石的上半部分。我对如何执行此操作有一个想法,因此不需要帮助。

1 个答案:

答案 0 :(得分:0)

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