具体效果:
完整代码:
import random
def print_christmas_tree(height):
# 打印圣诞树的顶部
for i in range(height):
# 打印空格,使树居中
for j in range(height - i - 1):
print(" ", end="")
# 打印星号,构成树的枝干,并添加随机装饰(这里用"."表示装饰)
for k in range(2 * i + 1):
if k == 0 or k == 2 * i: # 树的两边始终为星号
print("*", end="")
else:
# 中间部分随机添加装饰,使用random.choice()实现真正的随机
decoration = random.choice(["*", "."])
print(decoration, end="")
# 换行到下一层
print()
# 打印空行分隔树的顶部和树干
print("\n" * (height // 5))
# 打印树干
trunk_height = height // 3 # 树干的高度是树高的三分之一
trunk_width = (height // 2) + 1 # 使树干更粗壮,宽度为树高的一半加1(保证是奇数)
if trunk_width % 2 == 0:
trunk_width += 1
for i in range(trunk_height):
# 打印空格,使树干居中
for j in range((2 * height - trunk_width) // 2):
print(" ", end="")
# 打印树干,并用"|"表示
for k in range(trunk_width):
print("|", end="")
# 换行
print()
# 打印空行分隔树干和树顶的星星
print("\n" * (height // 4))
# 打印树顶的星星,更加居中
star_position = height // 2 - 1 # 星星的位置,根据树的高度计算
for i in range(star_position): # 打印空格使星星居中
print(" ", end="")
print("*") # 打印星星
print("\n" * (height - star_position - 1)) # 打印空行,使输出更加整洁
# 设置随机种子(可选),以便每次运行程序时得到相同的随机装饰效果
random.seed(42)
# 调用函数,打印高度为15的圣诞树
print_christmas_tree(15)