如何优化模式并移除输出中的括号?

时间:2019-02-17 14:43:53

标签: python

我正在尝试编写一个打印对角线图案的函数。的参数是:

  1. 每行中的列数(星号)
  2. 行数
  3. 每行上两个连续的恒星之间的间隙长度。

这是我尝试过的:

def pattern(s, r, g):
    for i in range(r):
        print(" " * g, ("*", " " * g) * s, end="\n")

但是输出看起来像这样:对于pattern(2,3,4),其中2是每行中的星星数,3是行数,4是星星之间的间隙数

('*', '    ', '*', '    ')
('*', '    ', '*', '    ')
('*', '    ', '*', '    ')

如何在没有括号的情况下执行此操作?

3 个答案:

答案 0 :(得分:1)

您正在打印元组。您需要使用*运算符对元组进行解压缩:

def pattern(s, r, g):
    for i in range (r):
        print(' ' * g, *('*', ' ' * g) * s, end='\n')

pattern(2, 3, 4)

输出

     *      *
     *      *                                                    
     *      *                                            

答案 1 :(得分:0)

您可以再添加一个循环

    for i in range (r):
        for j in range(s):
            print('*', ' '*g, end='')
        print('\n')

pattern(3,5,8)

输出:

*         *         *         

*         *         *         

*         *         *         

*         *         *         

*         *         *

答案 2 :(得分:0)

或者打印出元组/展开元组,您也可以简单地打印通过使用+连接不同字符串部分而构建的字符串,例如

def pattern(s, r, g):
    for i in range(r):
        print(" " * g + ("*" + " " * g) * s, end="\n")


pattern(2, 3, 4)

输出:

     *      *
     *      *                                                    
     *      * 

请注意,end="\n"在这里是多余的,而且似乎没有对角线图案。