簡體   English   中英

如何優化模式並刪除輸出中的括號?

[英]How to refine the pattern and remove the brackets in output?

我正在嘗試編寫一個打印對角線圖案的函數。 對此的論據是:

  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 是星星之間的間隙數

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

如何在沒有括號的情況下執行此操作?

您正在打印元組。 您需要使用*運算符解包元組:

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

pattern(2, 3, 4)

輸出

     *      *
     *      *                                                    
     *      *                                            

您可以再添加一個循環

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

pattern(3,5,8)

輸出 :

*         *         *         

*         *         *         

*         *         *         

*         *         *         

*         *         *

或者打印出元組/擴展元組,您可以簡單地打印通過使用+連接不同字符串部分構建的字符串,例如

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


pattern(2, 3, 4)

輸出:

     *      *
     *      *                                                    
     *      * 

注意這里end="\\n"是多余的,而且似乎沒有對角線模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM