我想打印以下图案
*
* *
* * *
* * * *
* * * * *
我的代码:
for row in range(1,6):
print(' ' * (5-row) + row * '*')
上面的代码给了我预期的输出,但没有在每个*
后添加空格
*
**
***
****
*****
当我试图添加空格时,它打印为金字塔,这不是预期的输出有什么建议
print(' ' * (5-row) + row * '* ') -> space added after `'* '`
*
* *
* * *
* * * *
* * * * *
您只需要增加填充的大小;尝试以下操作:
for row in range(1, 6):
print(' ' * (5 - row) * 2 + row * '* ')
# *
# * *
# * * *
# * * * *
# * * * * *
或者,您可以将f-string与join
:一起使用
for i in range(1, 6):
print(f"{' '.join('*' * i):>9}")
# *
# * *
# * * *
# * * * *
# * * * * *
先为n-i
打印空白,然后为i
打印所需字符多次,其中i
是从1
到n
的单个数字。您可以在函数中实现代码,使其适用于n
:的任何值
def printPattern(n=5):
for i in range(1, n + 1):
print(' ' * (n - i) + '* ' * i)
输出:对于n
:的不同值
>>> printPattern(2)
*
* *
>>> printPattern() # default n is 5
*
* *
* * *
* * * *
* * * * *
>>> printPattern(10)
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *