Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用for循环创建圣诞树_Python_For Loop_Python 3.x - Fatal编程技术网

Python 使用for循环创建圣诞树

Python 使用for循环创建圣诞树,python,for-loop,python-3.x,Python,For Loop,Python 3.x,我正在尝试创建一个程序,在其中输入一个数字,该程序将创建一个“+”的“圣诞树”排列。例如,如果我输入数字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

我正在尝试创建一个程序,在其中输入一个数字,该程序将创建一个“+”的“圣诞树”排列。例如,如果我输入数字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)

它并没有像我期望的那样工作,即使我通过逻辑,它似乎在我的头脑中工作。有什么帮助吗?我今天刚刚学习了for循环,所以我可能不知道关于它们的一切。

好的,您有两个问题。首先,当你开始缩进时,你会写:

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)
但您可能希望继续使用详细的版本。

这样如何:

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

holidaybush(5)

如果将'x+=2'更改为'x+=1',则可以得到正确的形状,但不会有那么多的'+',但不会有那么宽 国防部:


您可以使用
string.center()

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

holidaybush(5)

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

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('') n=int(输入(“多大?\t”)) 对于范围(n)中的i: 对于范围内的j(n-i): 打印(“”,结束=“”) 打印('\b',end='')#作弊 对于范围内的k(i+n-j): 打印('*',结束='') 打印(“”) 这对我很有效。

`

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 loop打印圣诞树的简单代码这是绘制圣诞树最简单的代码:

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

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

print(('\====/').center(20))
为True时:
size=int(输入(“输入树的行数:”)
最后一行=(2*大小)-1
对于范围内的i(1,尺寸+1):
打印(((“)*(大小-i))+((“*”)*((2*i)-1)))

我为tree程序设计了这段代码。

什么语言?你得到了什么?这看起来像是一些无效的JS@Godisgood不,看起来很像python3,所以我已经重新标记了它,一旦它通过审查…@mastjoyce。是的,我认为你是对的。谢谢你的帮助。这个程序的诀窍是不允许我对字符串进行乘法,因为这样做太容易了。错过空间显然是愚蠢的。谢谢你帮我把它收紧。我还没有学会这些捷径。成功了!谢谢请至少提供您想要的描述请格式化您的代码并添加您认为应该使用代码块的说明“简洁是可以接受的,但更完整的解释更好。”
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)
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 i in range(1,20,2):
    print(('*'*i).center(20))

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

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