Python编程 圣诞树教程 (附代码)程序员的浪漫

news2024/11/19 7:23:11

  • 作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​​

目录

 前言

一.python 做圣诞树

1.turtle库

2.python函数的定义规则

2.引入库

3.定义画彩灯函数

 4.定义画圣诞树的函数

 5.定义树下面小装饰的函数

6.定义一个画雪花的函数 

 7.画五角星

 8.写文字

9.全部源代码


 前言

本章将会讲解Python编程 实现圣诞树效果!


一.python 做圣诞树


1.turtle库

turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。


2.python函数的定义规则

  1. (1)以 def 开头,后接定义函数的名称和圆括号(),以冒号结尾
  2. (2)圆括号()可为空,也可以传入参数
  3. (3)定义函数的内容,与def有缩进关系
  4. (4)调用自定义的函数的基本格式为:定义函数的名称();若圆括号()为空,调用时,也为空,若若圆括号()不为空,调用时需传入参数
  5. (5)return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

3.引入库

import turtle as  t
from turtle import *
import random as r
import  time

4.定义画彩灯函数

#定义画彩灯的函数
def drawlight():
    if r.randint(0,30) == 0:         #randint用来生成随机数
        color('tomato')              #颜色()
        circle(6)                    #根据半径radius绘制extent角度的弧形
    elif r.randint(0,30) == 1:
        color('orange')              #颜色()
        circle(3)
    else:
        linewidth = 5                #线型
        color('dark green')          #颜色

 5.定义画圣诞树的函数

#定义画圣诞树的函数
def tree(d,s):         #定义函数 树
    if d <= 0:  return   #返回函数的返回值
    forward(s)           #向前
    tree(d-1, s * .8)
    right(120)           #方向 向右
    tree(d-3, s * .5)
    drawlight()          
    right(120)
    tree(d-3, s * .5)
    right(120)
    backward(s)          #向后 

 6.定义树下面小装饰的函数

#定义树下面小装饰的函数
def  xzs():
    for i in range(200):              #范围
        a = 200-400* r.random()       # random模块用于生成随机数
        b = 10 -20* r.random()
        up()
        forward(b)                    #向前
        left(90)                      #左边
        forward(a)
        down()                        #向下
        if  r.randint(0,1) == 0:
            color('tomato')
        else:
            color('wheat')
        circle(2)                      #圆
        up()
        backward(a)
        right(90)
        backward(b)

7.定义一个画雪花的函数 

#定义一个画雪花的函数
def drawsnow():
    t.hideturtle()                   #这个方法是用来使Turtle隐身的。          
    t.pensize(2)                     #pensize(数字)可以设置画笔的宽度
    for i in range(200):
        t.pencolor("white")
        t.penup()
        t.setx(r.randint(-350,350))   #将当前x轴移动到指定位置
        t.sety(r.randint(-100,350))   #将当前y轴移动到指定位置
        t.pendown()                   #放下画笔
        dens = 6
        snowsize = r.randint(1,10)    #生成随机数
        for j in range(dens):
            t.forward(int(snowsize))
            t.backward(int(snowsize))
            t.right(int(360/dens))

 8.画五角星

#画五角星
for i in range(5):
    forward(n/5)
    right(144)
    forward(n/5)
    left(72)

end_fill()
right(126)

color("dark green")
backward(n * 4.8)

 9.写文字

#写文字
t.color("dark red", "red")
t.write("Merry Christmas", align="center", font=("Comic Sans MS", 40, "bold"))
#写 "Merry Christmas" 使成一条直线  居中   字体   似手写的字体   40  粗体

10.全部源代码

import turtle as  t
from turtle import *
import random as r
import  time

#定义几个函数先

#定义画彩灯的函数
def drawlight():
    if r.randint(0,30) == 0:
        color('tomato')
        circle(6)
    elif r.randint(0,30) == 1:
        color('orange')
        circle(3)
    else:
        linewidth = 5
        color('dark green')

#定义画圣诞树的函数
def tree(d,s):
    if d <= 0:  return
    forward(s)
    tree(d-1, s * .8)
    right(120)
    tree(d-3, s * .5)
    drawlight()
    right(120)
    tree(d-3, s * .5)
    right(120)
    backward(s)

#定义树下面小装饰的函数
def  xzs():
    for i in range(200):
        a = 200-400* r.random()
        b = 10 -20* r.random()
        up()
        forward(b)
        left(90)
        forward(a)
        down()
        if  r.randint(0,1) == 0:
            color('tomato')
        else:
            color('wheat')
        circle(2)
        up()
        backward(a)
        right(90)
        backward(b)

#定义一个画雪花的函数
def drawsnow():
    t.hideturtle()
    t.pensize(2)
    for i in range(200):
        t.pencolor("white")
        t.penup()
        t.setx(r.randint(-350,350))
        t.sety(r.randint(-100,350))
        t.pendown()
        dens = 6
        snowsize = r.randint(1,10)
        for j in range(dens):
            t.forward(int(snowsize))
            t.backward(int(snowsize))
            t.right(int(360/dens))


n=100.0
t.pensize(10)
speed("fastest")
t.screensize(800,600, "black")
left(90)
forward(3 * n)
color("orange", "yellow")
begin_fill()
left(126)


#画五角星
for i in range(5):
    forward(n/5)
    right(144)
    forward(n/5)
    left(72)

end_fill()
right(126)

color("dark green")
backward(n * 4.8)


#调用画树的函数
tree(15 , n)
backward(n/2)

xzs()

#写文字
t.color("dark red", "red")
t.write("Merry Christmas", align="center", font=("Comic Sans MS", 40, "bold"))



# 调用雪花函数
drawsnow()

t.done()    #收笔

创作不易,求关注,点赞,收藏,谢谢~ 

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

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

相关文章

中断系统中的设备树__在S3C2440上使用设备树描述中断体验

目录 1 怎么描述一个中断 2 怎么描述一个中断控制器 3 总结 1 怎么描述一个中断 我们想在设备树文件中描述一个中断&#xff0c;那么需要两个东西 a.指定是哪一个中断控制器 b.是中断控制器里面的哪一个中断。 假设我们有一个网卡&#xff0c;当网卡有数据时会产生一个中…

论文速度系列三:SA-SSD、CIA-SSD、SE-SSD

如有错误&#xff0c;恳请指出。 参考网上资料&#xff0c;对一些经典论文进行快速思路整理 文章目录1. SA-SSD2. CIA-SSD3. SE-SSD1. SA-SSD paper&#xff1a;《Structure Aware Single-stage 3D Object Detection from Point Cloud》&#xff08;2020CVPR&#xff09; 结构…

网络工程师备考4章

4.1 历年考点分布 4.2 局域网和城域网 4.2.1 局域网体系与拓扑结构 一般数据链路层的协议都是IEEE这个组织规范的,网络层是有RFC这个组织规范的。 数据链路层是可以划分为两个子层的,第一个叫逻辑链路控制LLC(对接上面的网络层),第二个叫MAC子层(更偏向于物理层)。 最…

【hadoop】Hadoop 3.3.4 集群安装及简单使用

目录环境信息1. 准备1.1 服务器规划1.2 主机名及hosts文件修改1.2.1 hostname修改1.2.2 hosts文件修改1.3 创建hadoop用户&#xff08;建议&#xff09;1.4 为hadoop用户添加sudo权限1.5 互信免密登录1.6 快速文件同步&#xff08;可选&#xff09;2. 安装2.1 下载并安装jdk2.2…

变量学习笔记

一:作用域 说起变量第一个要说到的肯定就是作用域,正是因为不熟悉JS的作用域,往往就会把面向对象的作用域张冠李戴,毕竟有些东西总是习惯性 的这样,但是并不是每次照搬都是可以的,那么下一个问题就来了,js到底是什么作用域,当然是函数作用域了,我们的浏览器就是一个被…

基于工业物联网的温度监测系统在钢铁行业的应用

随着钢铁行业的快速发展&#xff0c;越来越多电气设备被接入到工业生产系统中&#xff0c;对自动化和连续性的生产提出新的要求&#xff0c;需要关注到供电的稳定可靠&#xff0c;也要关注到用电设备的运行状态。电气设备在长期运行中会面临越来越高的风险&#xff0c;引发危险…

ncurses交叉编译

1.环境 编译环境&#xff1a;ubuntu18.04虚拟机 板端&#xff1a;移远AG550平台 编译链aarch64-oe-linux 2.ncurses下载 ncurses库下载地址&#xff1a;Index of /pub/gnu/ncurses 下载5.9的版本 3.解压并且编译 tar xvf ncurses-5.9.tar.gz cd ncurses-5.9 执行configure命…

Android与H5(Vue)交互

Android与H5互调 实现效果&#xff1a; JS调用Android方法实现dialog弹窗&#xff0c;Android点击弹窗确定/取消按钮调用JS方法&#xff0c;在H5界面展示传递的参数。 Vue准备&#xff1a; 执行 npm run serve 命令启动项目&#xff0c;启动成功后会在命令行看到两个地址&am…

beego框架学习之安装框架

Beego 是一个快速开发 Go 应用的 HTTP 框架&#xff0c;可以用来快速开发 API、Web 及后端服务等各种应用&#xff0c;是一个 RESTful 的框架&#xff0c;相对于echo框架仅包含路由和控制器核心模块&#xff0c;beego是一个完整的MVC框架包括路由&控制器、model 数据库ORM封…

GitLab结合fortify实现自动化代码审计实践

一、背景 在甲方做安全的同学可能会有一项代码审计的工作&#xff0c;通常需要从gitlab把代码拉取下来&#xff0c;然后使用代码审计工具进行扫描&#xff0c;然后对结果进行人工确认&#xff1b; 在这个流程中需要做的事情比较繁琐&#xff0c;比如说gitlab如何配置token、如…

.net开发安卓入门 - 基本交互(Button,输入EditText,TextView,Toast)

.net开发安卓入门 - 基本交互前言TextViewEditTextButtonxml代码如下C#代码如下运行效果优化代码先看原生Android给一个View添加点击事件的三种方式在Xamarin.Android中添加onClick也的两种办法使用onClick绑定前后台调用处理逻辑第一步&#xff1a;第二步&#xff1a;第三步&a…

【实操篇】Linux组管理

目录 ●组管理 ●linux组的基本介绍 ●组的创建以及对用户的操作&#xff08;复习&#xff09; ●查看文件的所有者 ●改变文件所有者 ●修改文件所在的组 ●改变用户所在组 ●linux组的基本介绍 在Linux中的每个用户必须属于一个组&#xff0c;不能独立于组外。并且在Li…

[附源码]Python计算机毕业设计SSM基于云服务器网上论坛设计(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

软件测试 | 版本控制神器GitHub的基本使用与踩坑,教你一铲子填平!

首先需要申请GitHub帐号&#xff0c;这个就不多说了&#xff0c;大家自行百度或Google吧哈。这里默认大家都已经有GitHub账号了~ PS:&#xff08;如果已经配置好的小伙伴可以跳过配置GitHub这部分&#xff09; 配置GitHub 踩坑时刻 - 配置 第一次使用&#xff0c;如果没有配…

Photoshop使用蓝湖 cutterman插件快速切图

快速切图便于节约我们的开发时间 一 蓝湖插件 1.蓝湖官网下载插件 2.ps加载插件 一般都会自动加载 3.开始使用蓝湖插件切图 点击蓝湖插件选择对应的团队点击面板上的切图&#xff0c;选中图层进行标记 标记完成后选择上传全部面板 会提示到蓝湖官网下载对应的切图选择对应的…

mac OS 环境下安装 Redis(使用Homebrew终端安装)

使用Homebrew终端安装Redis&#xff08;好处后面会介绍&#xff09; 获取安装Homebrew&#xff08;复制如下代码到终端运行&#xff09;&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"选择好克隆原后按提示…

【学习经验分享NO.15】本科硕士学位论文和学术论文查重及降重方法

文章目录前言一、查重方法1、查重指标的含义2、查重方法二、如何修改论文重复三、常见问题答疑总结前言 学术小论文以及本科和硕士大论文在发表前需要进行降重处理&#xff0c;不然重复率过高会影响论文的发表&#xff0c;小论文一般查重要至少在20%以下&#xff0c;有些sci期…

pandas设置和显示数据框行列的数量

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 pandas设置和显示数据框行列的数量 [太阳]选择题 以下python代码结果错误的一项是? import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None…

vue集成ant-design-vue

因为需要集成ant-design-vue&#xff0c;所以我在老的vue项目上进行集成&#xff0c;这不集成不要紧&#xff0c;一集成项目都起不来&#xff0c;下面进行下梳理 1遇到问题&#xff1a; BrowserslistError: Unknown browser query dead 查资料得到; 1.删除package.json文件里…

Docker[3]-Docker的常用命令

1 帮助命令 命令说明docker version查看docker的版本信息docker info查看docker详细的信息docker --helpdocker的帮助命令&#xff0c;可以查看到相关的其他命令 docker version docker info docker --help 2 镜像命令 镜像命令说明docker images列出本地主机上的镜像docker …