Limit = int(input('Enter the limit: '))
Number = 1
NumberIncrement = 1
while( NumberIncrement < ( Limit+1 ) ):
val = NumberIncrement - 1
space = NumberIncrement
while ( space < Limit ):
print(' ',end = '')
space += 1
for x in range( Number ,(NumberIncrement+1) ):
print( x, end = '')
while ( val > 0):
print( val, end = '')
val -= 1
print('\n')
NumberIncrement += 1
NumberIncrement = 1
val1 = Limit
while( Limit > (NumberIncrement-1) ):
val = Limit - 2
space = (val1-1) - val
for x in range( 0, space ):
print(' ',end = '')
for x in range( Number ,Limit ):
print(x, end = '')
while ( val > 0):
print( val, end = '')
val -=1
print('\n')
Limit -=1
输出为:
输入限制:5
1
121
12321
1234321
123454321
1234321
12321
121
1
我是编码的新手,我正在寻找解决上述问题的不同方法。
是否有一种更好的方法可以使用较少的代码循环来解决此问题。
答案 0 :(得分:1)
使用itertools.chain
,str.join
和str.center
的一种简洁而优雅的方法:
from itertools import chain
def upanddown(n): # lazy iterator producing 1, 2, ..., n-1, n, n-1, ..., 2, 1
return chain(range(1, n), range(n, 0, -1))
def diamond(n):
for i in upanddown(n):
print(''.join(map(str, upanddown(i))).center(2*n-1))
>>> diamond(5)
1
121
12321
1234321
123454321
1234321
12321
121
1
答案 1 :(得分:0)
请参阅此文档。您会知道的。 https://docs.python.org/3/library/string.html
答案 2 :(得分:0)
也许不是最好的解决方案,但我认为这是可行的:
limit=5
d=[]
s=''
for i in map(str,range(1,limit+1)):
s += i
l = s+s[-2::-1]
ll = ' ' * (limit - len(l) // 2) +l
d.append(ll)
print(ll)
for i in d[-2::-1]:
print(i)
您还有其他换行符,我不确定它们是否是预期的,但是您可以轻松地将其重新添加。