使用for循环创建一棵圣诞树

时间:2014-10-24 20:44:44

标签: python for-loop python-3.x

我正在尝试创建一个程序,您可以在其中输入一个数字,程序会创建一个" christmastree"安排+。例如,如果我输入数字5,程序应该打印:

    +
   +++
  +++++
 +++++++
+++++++++

到目前为止我所拥有的是:

def holidaybush(n):
    z=n-1
    x=1
    for i in range(0,n):
        for i in range(0,z):
            print('',end='')
        for i in range(0,x):
            print('+',end='')
        for i in range(0,z):
            print('',end='')
        x=x*2
        x=x-1
        z=z-1
        print()
holidaybush(5)

它不像我期望的那样工作,即使我经历了逻辑,它似乎在我脑海中起作用。有帮助吗?我今天刚刚学习了循环,所以我可能不知道它们的一切。

10 个答案:

答案 0 :(得分:3)

好的,你有两个问题。首先,当你去缩进时,你写道:

print('',end='')

在python(和其他语言)中,''是一个空字符串。您应该使用' '

其次,你的x递增逻辑似乎是错误的。只需添加2每个循环工作正常,制作您的程序:

def holidaybush(n):
    z=n-1
    x=1
    for i in range(0,n):
        for i in range(0,z):
            print(' ',end='')
        for i in range(0,x):
            print('+',end='')
        for i in range(0,z):
            print(' ',end='')
        x=x+2
        z=z-1
        print()
holidaybush(5)

您的代码可以通过以下方式变得更加紧凑:

  • 使用中缀运算符,将x=x+2替换为x+=2
  • range自动从零开始,因此range(0,z)可以替换为range(z)
  • 使用字符串乘法,用for
  • 替换内部' ' * z循环

将这些结果应用于:

def holidaybush(n):
    z = n - 1
    x = 1
    for i in range(n):
        print(' ' * z + '+' * x + ' ' * z)
        x+=2
        z-=1
holidaybush(5)

但你可能想要坚持使用详细版本。

答案 1 :(得分:2)

怎么样:

def holidaybush(n):
    for i in range(n):
        print ' ' * (n - (i + 1)),'+' * (2*i+1)

holidaybush(5)

答案 2 :(得分:2)

您可以使用string.center(),仅用于添加其他解决方案,这使代码更紧凑:

def holidaybush(n):
    for i in range(n):
        print(("+" * (i * 2 + 1)).center(n * 2 - 1))

holidaybush(5)

答案 3 :(得分:1)

这是绘制圣诞树的最简单的代码:

for i in range(1,20,2):
    print(('*'*i).center(20))

for leg in range(3):
    print(('||').center(20))

print(('\====/').center(20))

答案 4 :(得分:0)

如果您更改了' x + = 2'到' x + = 1'你得到了正确的形状,但没有那么多' +',但它不会变宽 MOD:

def holidaybush(n):
z = n 
x =1

for i in range(n):
    print(' ' * z + '+' * x + ' ' * z)
    x+=1
    z-=1


holidaybush(5)

答案 5 :(得分:0)

我们也可以没有任何数字,只是为了好玩

n = int(input("how big?\t"))
for i in range(n):
    for j in range(n-i):
        print(' ', end='')
    print('\b', end='') #cheating
    for k in range(i+n-j):
        print('*', end='')
    print('')

答案 6 :(得分:0)

number = -1
Range = int(input("how many layers do you want the tree?"))
for x in range(0,Range):
    number = number + 2
    print(" " * (Range - x), "+" * number)

这对我有用。

答案 7 :(得分:0)

`

a=7
n=7
for i in range(7):
  print(" "*a,end="")
  print("*"*(2*i+1))
  a-=1
for b in range (n//2):
  print("     *****")

` 尝试使用此简单代码使用for循环

打印树

答案 8 :(得分:0)

while True:
    size = int(input("Enter the number of rows for the tree:"))
    last_row = (2 * size) - 1
    for i in range(1, size + 1):
        print(((" ") * (size - i)) + (("*") * ((2 * i) - 1)))

我想出了这个树程序的代码。

答案 9 :(得分:-2)

height = eval(input("Enter height of tree: "))
for row in range(height):
    for count in range(height - row):
        print(end=" ")
    for count in range(2*row + 1):
        print(end="*")
    print()