[英]Printing christmas tree in 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~~~~~~~~
~~~~~~* * *~~~~~~
~~~~* * * * *~~~~
~~* * * * * * *~~
* * * * * * * * *
~~~~~~~~|~~~~~~~~
~~~~~~~~|~~~~~~~~
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))
这是一个使用string
方法center
的示例。
for x in range(1, 30, 2):
s = '*' * x
print(s.center(30))
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
*************************
***************************
*****************************
>>>
编辑:包括波浪号。
limit = 30
for x in range(1, limit, 2):
tildes = '~' * ((limit-x)//2)
out = tildes + '*' * x + tildes
print(out)
~~~~~~~~~~~~~~*~~~~~~~~~~~~~~
~~~~~~~~~~~~~***~~~~~~~~~~~~~
~~~~~~~~~~~~*****~~~~~~~~~~~~
~~~~~~~~~~~*******~~~~~~~~~~~
~~~~~~~~~~*********~~~~~~~~~~
~~~~~~~~~***********~~~~~~~~~
~~~~~~~~*************~~~~~~~~
~~~~~~~***************~~~~~~~
~~~~~~*****************~~~~~~
~~~~~*******************~~~~~
~~~~*********************~~~~
~~~***********************~~~
~~*************************~~
~***************************~
*****************************
我稍微编辑了您的代码:
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% 直的。
我稍微修改了你的代码,这里是代码:
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~~~~~~~~
~~~~~~* * *~~~~~~
~~~~* * * * *~~~~
~~* * * * * * *~~
* * * * * * * * *
~~~~~~~~|~~~~~~~~
~~~~~~~~|~~~~~~~~
这是一个简单的编程问题。 因此,让我们创建一个简单的程序来解决它。
首先,我们需要绘制我们的树。 在每一行中,我们的树有奇数个开始用于显示树和一些~
字符用于表示背景。 如果我们想要一棵树,它的高度等于height
变量。 在height
th 行,我们不想有任何~
字符。 但是在第一行中,我们希望只有一个*
字符。
因此,让 for 循环从height
计数到零并以某种方式将~
字符的数量与其相关似乎是一个好主意。
我们先看代码:
for i in range(height, 0, -1):
print("~" * (i - 1)) // repeating `~` character (i - 1) times
如果运行此代码,您将获得以下输出:
~~~~~~
~~~~~
~~~~
~~~
~~
~
现在让我们添加*
字符来绘制树。 对于~
*
字符,我们应该有完全相反的关系。
for i in range(height, 0, -1):
print("~" * (i - 1), end="")
print("*" * (((height - i) *2) + 1))
我们在上一个print
函数的末尾添加end=""
。 因为print
会在每次调用的末尾添加一个换行符,我们想阻止它(因为我们想在~
字符后添加*
字符)。
然后我们要在每一行添加*
字符。 但是我们想将它们的数量计算为 1 到height * 2
。 但我们只需要奇数。 这就是我们在第二行所做的。 现在,我们每行有以下数量的*
字符:1, 3, 5, 7,...
以下是该代码的输出(我们认为height = 7
):
~~~~~~*
~~~~~***
~~~~*****
~~~*******
~~*********
~***********
*************
如您所见,现在我们有了圣诞树。 但是我们的背景是不完整的。 我们唯一应该做的就是重复我们的第一个print
语句。 但是这次我们不应该添加end=""
因为我们希望在每一行的末尾都有换行符。
for i in range(height, 0, -1):
print("~" * (i - 1), end="")
print("*" * (((height - i) *2) + 1), end="")
print("~" * (i - 1))
现在我们的树完成了:
~~~~~~*~~~~~~
~~~~~***~~~~~
~~~~*****~~~~
~~~*******~~~
~~*********~~
~***********~
*************
您可以按照这种简单的方法向树中添加其他内容。 我希望这可以帮助你。
尝试使用更多条件来处理星数 (*)。 如果这不起作用,请在下面发表评论。
就像,你可以这样做:
如果 '1star' 这样做..: elif '2stars' 这样做..:
我会这样编码:
sky=8
tree=1
for i in range(0,5):
if i==0:
print(sky*'~'+tree*'o'+sky*'~')
else:
print(sky*'~'+tree*'*'+sky*'~')
sky-=1
tree+=2
sky=8
tree=1
for i in range(0,2):
print(sky*'~'+tree*'|'+sky*'~')
我修改了圣诞树,使它看起来更薄。
这是我的代码:
var = 14
for i in range(1, var + 1):
print(" " * (var - i) + "*" * i + "*" * (i - 1))
示例输出:
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.