使用python画一颗圣诞树

具体效果:

完整代码:

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAP ABAP开发学习——BAPI

目录 业务对象 概念 ​编辑业务对象浏览 BAPI BAPI的浏览 BAPI的调用 BAPI的确认和返回 BAPI的创建 MM/SD常用BAPI 附加:长文本修改 业务对象 概念 业务对象浏览 进入SWO3查看 双击BUS2012 双击下图上方红色位置可以看到BAPI方法的内容 BAPI BAPI(Busines…

MR30分布式IO:石化行业的智能化革新

在浩瀚的工业领域中,石化行业如同一座巨大的化工厂,将自然界的原始资源转化为人们日常生活中不可或缺的各种产品。然而,随着生产规模的扩大和工艺复杂度的提升,石化行业面临着前所未有的挑战:如何在保证生产效率的同时…

VLAN高级特性:VLAN聚合

一、VLAN聚合的概述 在一般的三层交换机中,通常是采用一个VLAN对应一个VLANIF接口实现广播域之间的互通,这导致了在一些情况下造成了IP地址的浪费。 因为一个VLAN对应的子网中,子网号,子网广播地址、子网网关地址不能用作VLAN内…

【Linux系列】磁盘空间不足

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

进程与线程的初探

什么是进程? 现代的操作系统需要运行各种各样的程序。为了管理这些程序的运行,操作系统提出了进程(process)的抽象:每一个进程对应一个运行中的程序。 进程 进程的状态 为了对进程进行管理,操作系统定义了进程的状态。 新生状态…

DNS服务器部署

一、正反向分析 二、主从服务器配置 前提操作: 虚拟机关闭防火墙 一、正反向分析 1、主配置文件 2、正向分析 3、反向分析 二、主从服务器配置 从服务器主配置 从服务器Type改为slave。 编写正反向分析文件。 测试&#xff1…

Spring DispatcherServlet详解

文章目录 Spring DispatcherServlet详解一、引言二、DispatcherServlet的初始化与工作流程1、DispatcherServlet的初始化1.1、加载配置和建立WebApplicationContext1.2、初始化策略 2、DispatcherServlet的工作流程2.1、请求分发2.2、代码示例 三、总结 Spring DispatcherServl…

计算机性能分析的三个模型

计算机性能分析的三个模型【1】 一、瓶颈分析(Bottleneck Analysis)二、利特尔法则(Littles Law)【2】三、M/M/1 QueueReference 一、瓶颈分析(Bottleneck Analysis) 瓶颈分析可以帮我们更好地定位导致性能…

Golang | Leetcode Golang题解之第520题检测大写字母

题目: 题解: func detectCapitalUse(word string) bool {// 若第 1 个字母为小写,则需额外判断第 2 个字母是否为小写if len(word) > 2 && unicode.IsLower(rune(word[0])) && unicode.IsUpper(rune(word[1])) {return f…

开发一个基于Delphi的题库生成系统

开发一个基于Delphi的题库生成系统 步骤一:需求分析 首先明确系统需要实现的功能,比如: 添加题目编辑题目删除题目题目分类管理随机生成试卷导出试卷为PDF或Word格式 步骤二:设计数据库 使用SQLite或其他轻量级数据库存储题…

红队-shodan搜索引擎篇

如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一.shodan原理与功能的介绍 Shodan Search Engine 它是专门搜网络设备的,只要联网的,只要有IP地址的都可以称为网络设备 1.shodan&#x…

机器学习中的数据可视化:常用库、单变量图与多变量图绘制方法

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

Python复习2

一、封装函数 #自己封装len函数 s1 "hello,python" print(f"s1的长度为{len(s1)}")def my_len(data):count0for i in data:count 1print(f"{data}的长度为{count}")my_len(s1) 二、容器的排序(排序之后的结果都会变成列表&#xf…

从0开始深度学习(23)——图像卷积

上节了解了卷积层的原理,本节以图像为例,介绍一下它的实际应用 1 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation)。 首先,我们暂时忽略通…

代码随想录算法训练营第十二天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度 、111.二叉树的最小深度

226.翻转二叉树 题目链接:. - 力扣(LeetCode) 文章讲解:代码随想录 视频讲解:听说一位巨佬面Google被拒了,因为没写出翻转二叉树 | LeetCode:226.翻转二叉树_哔哩哔哩_bilibili《代码随想录》…

2024阿里云CTF Web writeup

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 前言 又是周末…

【CSS】CSS 样式重置 (normalize.css 和 reset.css) 和通用样式配置

一般来说,每一个项目初始化阶段都需要样式重置和样式定制化。样式重置最常用的就是 normalize.css 和 reset.css 这两个文件。 他们的区别: Normalize.css更加注重保留有用的浏览器默认样式,仅修复浏览器之间的不一致性,适用于需…

动态规划——两个数组的dp问题

目录 一、最长公共子序列 二、不同的子序列 三、通配符匹配 四、正则表达式匹配 五、两个字符串的最小ASCII删除和 六、最长重复子数组 七、交错字符串 一、最长公共子序列 最长公共子序列 第一步:确定状态表示 dp[i][j]:表示字符串 s1 的 [0&am…

安卓13默认连接wifi热点 android13默认连接wifi

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有时候我们需要让固件里面内置好,相关的wifi的ssid和密码,让固件起来就可以连接wifi,不用在手动操作。 2.问题分析 这个功能,使用普通的安卓代码就可以实现了。 3.代…

Kubernetes:(三)Kubeadm搭建K8s 1.20集群

文章目录 一、Kubeadm安装流程二、实验1.环境准备2.所有节点安装kubeadm,kubelet和kubectl(除了Harbor节点)3.部署 Dashboard4.安装Harbor私有仓库 一、Kubeadm安装流程 集群名称IP地址安装软件master(2C/4G,cpu核心数…