使用python画一颗圣诞树

news2024/11/23 1:47:39

具体效果:

完整代码:

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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

省级-碳排放相关数据(1990-2022年)

关键指标: 地区:数据涵盖了中国各省级行政区,为我们提供了一个全面的视角来观察不同地区的碳排放情况。年份:数据跨越了1990年至2022年,这为我们提供了一个长期的时间序列,以观察碳排放的变化趋势。总碳排…

评估 机器学习 回归模型 的性能和准确度

回归 是一种常用的预测模型,用于预测一个连续因变量和一个或多个自变量之间的关系。 那么,最后评估 回归模型 的性能和准确度非常重要,可以帮助我们判断模型是否有效并进行改进。 接下来,和大家分享如何评估 回归模型 的性能和准…

WPF+MVVM案例实战(二十)- 制作一个雷达辐射效果的按钮

文章目录 1、案例效果2、文件创建与代码实现1、创建文件2、图标资源文件3、源代码获取1、案例效果 2、文件创建与代码实现 1、创建文件 打开 Wpf_Examples 项目,在 Views 文件夹下创建窗体界面 RadarEffactWindow.xaml 。代码功能分两个部分完成,一个是样式,一个是动画。页…

小程序配置消息推送

配置以上信息后,点击提交时, 服务器需要配置GET请求,同时验证签名,签名通过后,返回参数echo_str, 切忌: 一定转化为int类型; python fastapi实现代码如下: async def callback_file(request: …

【大模型开发指南】llamaindex配置deepseek、jina embedding及chromadb实现本地RAG及知识库(win系统、CPU适配)

说一些坑,本来之前准备用milvus,但是发现win搞不了(docker都配好了)。然后转头搞chromadb。这里面还有就是embedding一般都是本地部署,但我电脑是cpu的没法玩,我就选了jina的embedding性能较优(…

C++ STL 学习指南:带你快速掌握标准模板库

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 大家好呀!🤗 今天我们来聊一聊 C 程序员的必备神器——STL(Standard Template Library&#xf…

NIO 核心知识总结

在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。也就是说,当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连…

从“点”到“面”,热成像防爆手机如何为安全织就“透视网”?

市场上测温产品让人眼花缭乱,通过调研分析,小编发现测温枪占很高比重。但是,测温枪局限于显示单一数值信息,无法直观地展示物体的整体温度分布情况,而且几乎没有功能拓展能力。以AORO A23为代表的热成像防爆手机改变了…

Linux·进程控制(system V)

1. 共享内存 system V共享内存是最快的IPC形式,之前的管道是基于Linux内核开发的通讯方案,其读写接口都是现成的,因此内核设计者为了完成进程间通讯任务并不需要新增太多代码。而共享内存属于system V标准,是操作系统单独…

C# CSV工具类,读取csv文件、将数据导出为csv文件格式,用DataGridView表格控件显示

CSVHelper.cs工具类能够将CSV格式的文件读取到程序中,转换为内存中DataTable类型的数据,可以作为数据源直接给到DataGridView控件以表格形式显示csv中的数据。也可以导出程序中DataTable类型数据为CSV文件。 使用示例: 1、准备一个csv文件 2…

qt QMenuBar详解

1、概述 QMenuBar是Qt框架中用于创建菜单栏的类,它继承自QWidget。QMenuBar通常位于QMainWindow对象的标题栏下方,用于组织和管理多个QMenu(菜单)和QAction(动作)。菜单栏提供了一个水平排列的容器&#x…

Ubuntu用docker安装AWVS和Nessus(含破解)

Ubuntu安装AWVS(更多搜索:超详细Ubuntu用docker安装AWVS和Nessus) 首先安装docker,通过dockers镜像安装很方便,且很快;Docker及Docker-Compose-安装教程。 1.通过docker search awvs命令查看镜像; docker search awvs…

SpringBoot篇(简化操作的原理)

目录 一、代码位置 二、统一版本管理(parent) 三、提供 starter简化 Maven 配置 四、自动配置 Spring(引导类) 五、嵌入式 servlet 容器 一、代码位置 二、统一版本管理(parent) SpringBoot项目都会继…

Spring 框架精髓:从基础到分布式架构的进阶之路

一、概述 (一)Spring框架概念 1.概念: Spring框架是一个用于简化Java企业级应用开发的开源应用程序框架。 2.Spring框架的核心与提供的技术支持: 核心: IoC控制反转|反转控制:利用框架创建类的对象的…

[vulnhub]DC: 5

https://www.vulnhub.com/entry/dc-5,314/ 主机发现端口扫描 探测存活主机,175是靶机 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-02 13:27 CST Nmap scan report for 192.168.75.1 Host is up (0.00022s latency). MAC Addr…

C语言_数据结构_顺序表

1. 本章重点 顺序表初始化顺序表尾插顺序表尾删顺序表头插顺序表头删顺序表查找顺序表在pos位置插入x顺序表删除pos位置的值顺序表销毁顺序表打印 2. 顺序表的概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储…

形态学操作篇 原理公式代码齐活

一、腐蚀 腐蚀操作的核心原理是利用一个结构元素在图像上进行扫描,判断结构元素所覆盖的区域与前景像素的关系。如果结构元素完全被包含在前景像素区域内,那么结构元素中心对应的像素位置在腐蚀后的图像中被标记为前景像素;如果结构元素不完…

小北的字节跳动青训营与 LangChain 实战课:探索 AI 技术的新边界(持续更新中~~~)

前言 最近,字节跳动的青训营再次扬帆起航,作为第二次参与其中的小北,深感荣幸能借此机会为那些尚未了解青训营的友友们带来一些详细介绍。青训营不仅是一个技术学习与成长的摇篮,更是一个连接未来与梦想的桥梁~ 小北的青训营 X M…

【SSM详细教程】-15-Spring Restful风格【无敌详细】

精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

使用Python爬取某发地网市场蔬菜价格数据

前言 随着互联网技术的发展,数据抓取成为了获取大量公开数据的重要手段。本文将介绍如何利用 Python 编程语言结合 DrissionPage 和自定义的 DataRecorder 模块,实现对新发地市场蔬菜价格数据的自动化抓取,并将抓取到的数据保存至 CSV 文件中…