我想在每个*
之后显示一个空格。我的代码是:
def stars(n):
for x in reversed(range(n+1)):
print x * '*'
我得到的输出是:
*****
****
***
**
*
但我想:
* * * * *
* * * *
* * *
* *
*
另外,我想从右侧打印
* *
*
是否有任何方法可以从最后一个位置打印?
答案 0 :(得分:5)
您可以使用str.join
更轻松地加入具有给定分隔符的字母序列,在这种情况下为空格' '
def stars(n, delim=' '):
for x in reversed(range(n+1)):
print(delim.join('*'*x))
stars(5)
这给出了
* * * * *
* * * *
* * *
* *
*
答案 1 :(得分:4)
当您将字符串相乘时,它不必是单个字符,您可以使用print x * '* '
>>> def stars(n):
... for x in reversed(range(n+1)):
... print x * '* '
...
>>> stars(4)
* * * *
* * *
* *
*
请注意,这也会在每行后显示尾随空格;如果这对你有用,你可以使用:
print (x * '* ')[:-1]
您还可以导入使用分隔符参数sep
的打印函数:
>>> from __future__ import print_function
>>> print(*('*'*4),sep=' ')
* * * *
>>> def stars(n):
... for x in reversed(range(n+1)):
... print( *(x * '*'), sep=' ')
...
>>> stars(4)
* * * *
* * *
* *
*