我的意思是,我想制作一个根据用户输入打印星星的程序,我做到了:
for i in range(num):
print((i*-1)*' ' + (i+1)*'*')
for o in range(num-1):
print((num-o-1)*'*')
除了这个:
*
* *
*
我明白了:
*
**
*
如何实现空间?预先感谢!
我的意思是,我想制作一个根据用户输入打印星星的程序,我做到了:
for i in range(num):
print((i*-1)*' ' + (i+1)*'*')
for o in range(num-1):
print((num-o-1)*'*')
除了这个:
*
* *
*
我明白了:
*
**
*
如何实现空间?预先感谢!
如果将字符串乘以负数,则只会得到空字符串。而且您的公式一开始就不正确。您需要在前面填充足够的空间以使其对齐(在等宽终端中)。
这是正确执行此操作的一种方法
>>> 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 个字符的宽度。