Python 在金字塔中创建金字塔
我有一个编程练习,我们必须创建一个程序,根据一个小三角形的给定高度(用户输入),在一个金字塔图形中生成一个金字塔 我已经成功地创建了顶层金字塔,但是当涉及到后续的层时,我遇到了困难,金字塔变得不合适了 到目前为止,我一直在努力:Python 在金字塔中创建金字塔,python,Python,我有一个编程练习,我们必须创建一个程序,根据一个小三角形的给定高度(用户输入),在一个金字塔图形中生成一个金字塔 我已经成功地创建了顶层金字塔,但是当涉及到后续的层时,我遇到了困难,金字塔变得不合适了 到目前为止,我一直在努力: h = int(input()) for r in range (1, h+1): for i in range(1,h+1): if r == 1: print (((" " * ((((h * 2) - 1) * h)
h = int(input())
for r in range (1, h+1):
for i in range(1,h+1):
if r == 1:
print (((" " * ((((h * 2) - 1) * h) - h - i + 1)) + ("*" * (i * 2 - 1)))*(r*2-1))
else:
print (((" " * ((((h * 2) - 1) * h) - h - i + 1 - (r*2-1))) + ("*" * (i * 2 - 1)))*(r*2-1))
这应该是“h”为3时的预期输出
*
***
*****
* * *
*** *** ***
***************
* * * * *
*** *** *** *** ***
*************************
但我得到的却是:
*
***
*****
* * *
*** *** ***
***** ***** *****
* * * * *
*** *** *** *** ***
***** ***** ***** ***** *****
这里有一个你可以使用的函数。定义构成金字塔的各个组件有助于找出正确的使用公式 def棱锥体(h=1): pyr=['']*h 基准=2*h-1 对于范围(h)内的i: pyr[i]=“*(h-i-1)+”“*”*(2*i+1)+”“*(h-i-1) 对于范围(h)内的i: 对于范围(h)内的j: 打印(“*base*(h-i-1)+pyr[j]*(2*i+1)+”“*base*(h-i-1))
h=4的示例
>>> pyramid(4)
*
***
*****
*******
* * *
*** *** ***
***** ***** *****
*********************
* * * * *
*** *** *** *** ***
***** ***** ***** ***** *****
***********************************
* * * * * * *
*** *** *** *** *** *** ***
***** ***** ***** ***** ***** ***** *****
*************************************************
我没有使用复杂的方法,而是采用了另一种方法,即使用字符串和列表
def pyramid(h):
rows = [" * ", " *** ", "*****"]
for i in range(h):
out = []
for x in range(1,len(rows)+1):
temp = ""
for _ in range(i+1):temp += rows[x-1]
for _ in range(i, 0, -1):temp += rows[x-1]
out.append(temp+"\n")
print("".join([(" "*(h-1-i))+val for val in out]), end = "")
当使用h=3
as进行测试时:
pyramid(3)
正如预期的那样,输出为:
很抱歉,我输入了错误的输出,应该是三个金字塔堆栈,其中金字塔的基本堆栈由5个金字塔组成。从您的打印输出可以清楚地看出问题所在。告诉我们您认为问题是什么,解决方案是什么。这与预期的结果完全不同。基数由5个星号组成,而输出包含7个星号。您添加了一个额外的stackRight,我给出的示例是针对h=4
。它将在h=3
上显示5个星号。OP并没有说所有的金字塔都应该有5底。
*
***
*****
* * *
*** *** ***
***************
* * * * *
*** *** *** *** ***
*************************