用python打印圣诞树

2024-10-05 10:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能用Python做一棵完美的圣诞树呢?我这里有我的代码,但是它工作不好,它需要在第一个for循环中打印'~~'。你知道吗

height = 7
for a in range(1, (height + height) - 3):
    if a % 2 != 0:
        if a == 1:
            print(a * 'o')
        else:
            print(a * '* ')
for a in range(height + 1):
    if a % (height + 1) == 1:
        test = height - 3
        print(test * '~~' + a * '|' + test * '~~')
    if a % (height + 1) == 1:
        test = height - 3
        print(test * '~~' + a * '|' + test * '~~')

我的代码输出是:

o
* * * 
* * * * * 
* * * * * * * 
* * * * * * * * * 
~~~~~~~~|~~~~~~~~
~~~~~~~~|~~~~~~~~

我想要的输出是:

~~~~~~~~o~~~~~~~~
~~~~~~* * *~~~~~~
~~~~* * * * *~~~~
~~* * * * * * *~~
* * * * * * * * *
~~~~~~~~|~~~~~~~~
~~~~~~~~|~~~~~~~~

Tags: 代码intestforifrangeelseprint
3条回答

我只是编辑了一下你的代码:

height = 7
width = 17
for a in range(1, (height + height) - 3):
    if a % 2 != 0:
        if a == 1:
            sym = 'o'
            curly = ''.join(['~' for i in range((width-len(sym))//2)])
            print(curly +  a * sym + curly)
        else:
            sym = a * '* '
            curly = ''.join(['~' for i in range((width - len(sym)) // 2)])
            print(curly + sym + curly)
for a in range(height + 1):
    if a % (height + 1) == 1:
        test = height - 3
        print(test * '~~' + a * '|' + test * '~~')
    if a % (height + 1) == 1:
        test = height - 3
        print(test * '~~' + a * '|' + test * '~~')
~~~~~~~~o~~~~~~~~
~~~~~* * * ~~~~~
~~~* * * * * ~~~
~* * * * * * * ~
* * * * * * * * * 
~~~~~~~~|~~~~~~~~
~~~~~~~~|~~~~~~~~

它并不完美,但没有一棵圣诞树是100%直的。你知道吗

def values():
    yield 'o'
    for i in range(3, 10, 2):
        yield ' '.join('*' * i)
    yield from '||'

for v in values():
    print('{:~^17}'.format(v))

印刷品:

~~~~~~~~o~~~~~~~~
~~~~~~* * *~~~~~~
~~~~* * * * *~~~~
~~* * * * * * *~~
* * * * * * * * *
~~~~~~~~|~~~~~~~~
~~~~~~~~|~~~~~~~~

或:

for v in ['o'] + [' '.join('*' * i) for i in range(3, 10, 2)] + ['|', '|']:
    print('{:~^17}'.format(v))

我对你的代码做了一点修改,代码如下:

height = 7
z = height - 3
x = 1
for i in range(1, (height + height) - 3):
    if i % 2 != 0:
       if(i==1):
          print('~~' * z + 'o' +'~~' * z)
       else:
          print('~~' * z + '* ' * (x-1)+ '*' *1 +'~~' * z)
       x+=2
       z-=1
for a in range(height + 1):
    if a % (height + 1) == 1:
       test = height - 3
       print(test * '~~' + a * '|' + test * '~~')
    if a % (height + 1) == 1:
       test = height - 3
       print(test * '~~' + a * '|' + test * '~~')

输出:

~~~~~~~~o~~~~~~~~
~~~~~~* * *~~~~~~
~~~~* * * * *~~~~
~~* * * * * * *~~
* * * * * * * * *
~~~~~~~~|~~~~~~~~
~~~~~~~~|~~~~~~~~

相关问题 更多 >

    热门问题