如何“升级”沙漏图案生成器?

2024-05-19 01:44:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python中的模式做一个练习,我为n=5做了一个沙漏模式,但是当我尝试使用其他奇数,例如n==7时,它被破坏了。对如何升级我的代码有什么建议吗

def hourglass(num_of_rows):
    #upper piece
    for i in range(num_of_rows-(num_of_rows//2)):
        print(' '*i+ character*(num_of_rows-2*i))
    #lower piece without the middle one
    for j in range(num_of_rows-1-(num_of_rows//2), -1, -2):
        print(' '*(j-1) +character*(num_of_rows-j))

num_of_rows=5
character = 'x'
hourglass(num_of_rows)

Tags: of代码inforpiece模式rangenum
1条回答
网友
1楼 · 发布于 2024-05-19 01:44:42

并不是对您所做的工作进行精确升级,您可以使用递归来获得所需的内容。但是,如果n是偶数,这将不起作用,我不知道偶数的计时玻璃将如何,如果您指定,我可以相应地更改它str.center可以用于填充,而无需进行任何计算。如果需要任何解释,请告诉我

def hour_glass(n, character, width=None):
    if width is None:
        width = n
    if n == 1:
        print(character.center(width))
        return
    to_print = (character * n).center(width)
    print(to_print)
    hour_glass(n - 2, character, width)
    print(to_print)

输出

hour_glass(7, 'X')

XXXXXXX
 XXXXX 
  XXX  
   X   
  XXX  
 XXXXX 
XXXXXXX

hour_glass(5, 'X')

XXXXX
 XXX 
  X  
 XXX 
XXXXX

相关问题 更多 >

    热门问题