定义一个名为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