0

我的意思是,我想制作一个根据用户输入打印星星的程序,我做到了:

for i in range(num):
  print((i*-1)*' ' + (i+1)*'*')



for o in range(num-1):  
  print((num-o-1)*'*')

除了这个:

 *
* *
 *

我明白了:

*
**
*

如何实现空间?预先感谢!

4

1 回答 1

2

如果将字符串乘以负数,则只会得到空字符串。而且您的公式一开始就不正确。您需要在前面填充足够的空间以使其对齐(在等宽终端中)。

这是正确执行此操作的一种方法

>>> def diamond(n):
...     print(' '*n + '*')
...     for i in list(range(1,n)) + list(range(n,0,-1)):
...             print('{}*{}*'.format(' '*(n-i), ' '*(2*i-1)))
...     print(' '*n + '*')

将范围转换为列表对于较大的 n 效率不高,但这不是瓶颈,而且终端实际上​​只支持最多 80 个字符的宽度。

于 2013-08-17T03:07:45.717 回答