使用嵌套for循环在python中创建一个整数金字塔



定义一个名为print_pyramid(number_of_rows(的函数,该函数以整数为参数,并使用数字打印特定的金字塔图案。注意:您可以假设行数将始终>1和<10,并且必须使用嵌套的for循环。

例如:

金字塔我要得到

上面是我的问题和我需要得到的,但我不确定如何完成它。下面是我的代码尝试和结果。这是我的代码:

def print_pyramid(number_of_rows):

for row in range(number_of_rows):

for column in range(row, number_of_rows):
print("", end="")

for column in range(row+1):
print(row+1, end="")

for column in range(row, number_of_rows-1):
print(" ", end= "")

for column in range(row+1):
print(row+1, end="")

print() 

但我的代码告诉我:我的结果/输出

Jared的答案是正确的,而且肯定更优雅,但这里还有另一个解决方案。对初学者更友好,希望一眼就能更容易理解。

def pyramid(number_of_rows):
for i in range(1, number_of_rows + 1):
indent = ' ' * (number_of_rows - i)
row = str(i) * (i * 2 - 1)
print(indent + row)

这里有一个使用for循环生成金字塔模式的列表理解

print_pyramid = lambda x : print("n".join([(" "*(x-i))+(str(i)*(i*2-1))+(" "*(x-i)) for i in range(1,x+1)]))

print_pyramid(9)给出:

1        
222       
33333      
4444444     
555555555    
66666666666   
7777777777777  
888888888888888 
99999999999999999

您可以定义一个函数以这种方式打印您的金字塔

def pyramid(rows: int) -> str:
if rows < 1 or rows > 9:
raise ValueError
pyramid_string = ""
for i in range(1, rows + 1):
pyramid_string += f" " * (rows - i) + f"{i}" * (i * 2 - 1) + "n"
return pyramid_string

然后调用函数

print(pyramid(rows=5))

或者您可以使用一个变量来存储函数的结果

five_rows_pyramid = pyramid(rows=5)
print(five_rows_pyramid)

输出

1
222
33333
4444444
555555555

最新更新