我正在尝试用Python写一个圣诞树,我试图让它镜像到另一边,所以文本在左边镜像到它自己而不是树的一面我有两个边
tree = "I"
for i in range(12):
print(tree.ljust(2-i) * i)
答案 0 :(得分:3)
有更好的方法可以做到这一点,事实上你并不需要镜像,你可以只调整左边的填充,但让我们假设你想要一个真正的镜像,这样每一行都有相同的字符数。
首先应该将字符串相乘,然后对其进行对齐。然后,您可以使用切片运算符来反转两半([::-1]
)。
size = 12
for i in range(1, size):
half = (tree * i).rjust(size - 1)
print half + half[::-1]
II
IIII
IIIIII
IIIIIIII
IIIIIIIIII
IIIIIIIIIIII
IIIIIIIIIIIIII
IIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIII
请记住..
圣诞快乐唐!
答案 1 :(得分:2)
您应该使用rjust
代替ljust
,因为空格应填充在左侧。此外,你需要加倍计数,因为3个字符与2正确对齐。
tree = "I"
for i in range(12):
print((tree*(2*i)).rjust(12 + i))
输出:
II
IIII
IIIIII
IIIIIIII
IIIIIIIIII
IIIIIIIIIIII
IIIIIIIIIIIIII
IIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIII
答案 2 :(得分:1)
几乎是圣诞节,加上一些装饰品?
import random
tree = "I"
for i in range(12):
row = list(tree*(2*i))
if( i > 2):
index = int(random.random() * len(row))
if( index < len(row) - 1):
row[index] = "["
row[index + 1] = "]"
index2 = int(random.random() * len(row))
if( index2 != index and index2 != (index + 1)):
row[index2] = "O"
print (("".join(row)).rjust(12 + i))
多田:
II
IIII
I[]III
IIII[]IO
IIIOIIII[]
IIIIIIIIO[]I
III[]IIIIIOIII
IIIIIOIIIIIIII[]
IIIIIIIIOIIII[]III
IIIIOIIIIIIIIIIIIIII
II[]IIIIIIIIIIOIIIIIII
答案 3 :(得分:0)
这是我的看法:
ViewController
答案 4 :(得分:0)
我更喜欢使用str.center()
str.rjust()
上的尖树和(只是为了与众不同):
def tree(height, symbol='I'):
width = height*2 - 1
for i in range(height):
print((symbol * ((i*2)+1)).center(width))
>>> tree(12)
I
III
IIIII
IIIIIII
IIIIIIIII
IIIIIIIIIII
IIIIIIIIIIIII
IIIIIIIIIIIIIII
IIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIII