python实战教学之python版“张万森,好久不见”

前言

 

a8d1b737ed02ff568d1c8c1036371b4c.gif

 

WINTER IS COMING

 

a9f59b40418b63f213bcd90eb85cb6d3.gif

 

最近《一闪一闪亮星星》的电影在火热预售中,家人们抢到票了嘛,前两天小编写了一篇“张万森,下雪了”的文章后,收到了不少小伙伴的反馈:“代码的运行结果只有文字,没有雪花啊”,“可以加背景照片吗”等等。

 

于是我决定给大家写一篇可加背景图片的教程,以及代码运行过程中遇到问题的解决方案,一定要看到最后喔~

 

 

a9f59b40418b63f213bcd90eb85cb6d3.gif

 

 

绘图函数

 

a8d1b737ed02ff568d1c8c1036371b4c.gif

 

WINTER IS COMING

 

a9f59b40418b63f213bcd90eb85cb6d3.gif

 

Turtle是Python标准库中一个非常有趣和强大的绘图工具,它可以让我们通过编写Python代码来控制一个图形化窗口中的小海龟来绘制各种图形,例如线条、填充图形、文字等。下面是一些Turtle中常用的入门函数:

 

a9f59b40418b63f213bcd90eb85cb6d3.gif

1. turtle.forward(distance): 向前移动distance距离单位长度,可以是正数或负数,正数为向前,负数为向后。

2. turtle.backward(distance): 向后移动distance距离单位长度,可以是正数或负数,正数为向后,负数为向前。

3. turtle.right(angle): 向右旋转angle度,可以是正数或负数。

4. turtle.left(angle): 向左旋转angle度,可以是正数或负数。

5. turtle.penup(): 抬起画笔,不会再绘制图形。

6. turtle.pendown(): 落下画笔,继续绘制图形。

7. turtle.pensize(width): 设置画笔的宽度。

8. turtle.pencolor(color): 设置画笔的颜色,可以是颜色名称或RGB值。

9. turtle.fillcolor(color): 设置填充颜色,可以是颜色名称或RGB值。

10. turtle.begin_fill(): 开始绘制填充图形。

11. turtle.end_fill(): 结束绘制填充图形。

12. turtle.circle(radius, extent=None): 绘制一个半径为radius的圆形,extent可以指定圆弧的角度。

13. turtle.dot(size=None, color=None): 绘制一个指定大小和颜色的点。

14. turtle.write(text, font=None,, move=False): 在窗口中写入text,可以指定字体、对齐方式、是否移动海龟。

15. turtle.clear(): 清空窗口中的所有图形。

 

a9f59b40418b63f213bcd90eb85cb6d3.gif

 

以上是一些Turtle中常用的入门函数,它们可以组合使用来实现各种图形的绘制,让我们能够快速、简单地学习和使用Turtle。

 

a9f59b40418b63f213bcd90eb85cb6d3.gif

 

 

准备开始

a8d1b737ed02ff568d1c8c1036371b4c.gif

 

WINTER IS COMING

 

1c2ed2af2ebe5b019650cc1b65e65ad0.gif

环境搭建/安装软件

 

eb92adf956e094fa6cc3aabf105dd169.gif

 

a8d1b737ed02ff568d1c8c1036371b4c.gif

环境:Python3.12+PyCharm

 

【注】需要python3.12以上的版本哦,旧版的python可能因为版本问题会出现只有文字没有雪花的效果(需要安装包可以在公众号回复python领取哦)

 

具体安装教程看下面两篇文章即可

 

关于运行Python代码的方法以及遇到问题的解决方案(计算机小白篇)

如何下载安装PyCharm并搭建Python开发环境

 

 

 

1c2ed2af2ebe5b019650cc1b65e65ad0.gif

完整代码

eb92adf956e094fa6cc3aabf105dd169.gif

 

a8d1b737ed02ff568d1c8c1036371b4c.gif

下面是程序的完整代码,复制黏贴到PyCharm时,需要注意缩进哦(解决缩进问题:在PyCharm中同时按住“ctrl+A”选中全部代码,然后再同时按住“ctrl+alt+L”一键格式化代码)


import turtle as tu
import random as ra
import time
tu.setup(0.88, 0.84, None, 22)
tu.bgcolor('black')  # 设置画布颜色
tu.title("林北星")
tu.bgpic('林北星.png')
t = tu.Pen()
t.ht()  # 隐藏画笔
colors = ['white']  # 雪花的颜色列表
class Snow():  # 雪花类
    def __init__(self):
        self.r = ra.uniform(1, 3)  # 雪花的半径
        self.x = ra.randint(-1000, 1000)  # 雪花的横坐标
        self.y = ra.randint(500, 1000)  # 雪花的纵坐标
        self.speed = ra.randint(15, 99)  # 雪花移动速度
        self.color = ra.choice(colors)  # 雪花的颜色
        self.outline = 2  # 雪花的大小
    # 第一种雪花
    # def snow(self):
    #     t.pensize(self.outline)    #雪花的大小
    #     t.penup()                  #提笔
    #     t.goto(self.x,self.y)      #随机位置
    #     t.pendown()                #落笔
    #     t.color(self.color)        #雪花颜色
    #     t.begin_fill()
    #     t.fillcolor("white")
    #     t.circle(self.r)
    #     t.end_fill()
    # 第二种雪花
    def snow(self):  # 画每个雪花
        x = self.r  # 雪花的半径
        t.pensize(self.outline)  # 雪花的大小
        t.penup()  # 提笔
        t.goto(self.x, self.y)  # 随机位置
        t.pendown()  # 落笔
        t.color(self.color)  # 雪花颜色
        for i in range(6):  # 循环画六个雪花瓣
            t.forward(x * 5)
            t.backward(x * 2)
            t.left(60)
            t.forward(x * 2)
            t.backward(x * 2)
            t.right(120)
            t.forward(x * 2)
            t.backward(x * 2)
            t.left(60)
            t.backward(x * 3)
            t.right(60)
    def move(self):  # 雪花移动函数
        if self.y >= -500:  # 当雪花还在画布中时
            self.y -= self.speed  # 设置上下移动速度
        else:  # 当雪花漂出了画布时,重新生成一个雪花
            self.r = ra.uniform(1, 3)
            self.x = ra.randint(-1000, 1000)
            self.y = 500
            self.speed = ra.randint(15, 99)
            self.color = ra.choice(colors)
            self.outline = 2
Snows = []  # 用列表保存所有雪花
for i in range(595):
    Snows.append(Snow())
# t.penup()
# t.goto(0, -255)
# t.pendown()
# t.pencolor("white")
# t.write("张万森",, font=("Comic Sans MS", 33, "bold"))
#
# time.sleep(1)
#
# t.clear()
#
# time.sleep(1)
#
# t.write("下雪了",, font=("Comic Sans MS", 33, "bold"))
#
# time.sleep(1)
#
# t.clear()
#
# time.sleep(2)
while True:  # 开始绘制
    tu.tracer(0)
    t.clear()
    t.penup()
    t.goto(0, -255)
    t.pendown()
    t.write("我 好 想 你", align="center", font=("Comic Sans MS", 33, "bold"))
    for i in range(199):  # 199个漂浮的雪花
        Snows[i].move()
        Snows[i].snow()
    tu.update()
tu.mainloop()

 

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

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

相关文章

气温波动 C语言xdoj45

问题描述 最近一段时间气温波动较大。已知连续若干天的气温,请给出这几天气温的最大波动值是多少,即在这几天中某天气温与前一天气温之差的绝对值最大是多少。 输入说明 输入数据分为两行。 第一行包含了一个整数n,表示给出了连续n天…

JNPF低代码——全源码、免费部署的开发框架

低代码平台的概念很火爆,产品也是鱼龙混杂。 对于开发人员来说,在使用绝大部分低代码平台的时候都会遇到一个致命的问题:我在上面做的项目无法得到源码,完全黑盒。一旦我的需求平台满足不了,那就是无解。 与其他平台的…

便签电脑版下载教程,电脑便签用哪个

现在大家所熟知的电脑便签软件通常以电脑软件为主,过去那种贴满五颜六色的,几百张成一叠的桌面便利贴,可以实现随处粘贴,现在几乎已经被淘汰了,取而代之的是科技化的电脑便签软件。 在查找电脑便签软件时,…

helpdesk的工作流程是什么?

helpdes在IT部门中是一个非常重要的部门,负责为用户提供技术支持和问题解决方案。为了有效地提供这些服务,helpdesk需要建立一个清晰而高效的工作流程。本文将介绍helpdesk工作的典型流程,并探讨每个阶段的重要性。 1、用户报告问题 通常&…

RCG Self-conditioned Image Generation via Generating Representations

RCG: Self-conditioned Image Generation via Generating Representations TL; DR:将图像的无监督表征作为(自)条件(而非是将文本 prompt 作为条件),生成与原图语义内容一致的多样且高质量结果。视觉训练能…

Android :Paging (分页)加载数据-简单应用

1.Paging介绍: 安卓Paging是一种分页加载数据的方法,它基于无限滚动模式而设计,可以帮助应用更高效地利用网络带宽和系统资源。Paging库可以加载和显示来自本地存储或网络中更大的数据集中的数据页面,适用于以列表的形式加载大量…

VSCode配置记录

1. 修改代码背景颜色 1)Shift Command P,搜索框输入:settings.json 2)输入配置 {"workbench.colorCustomizations": {"editor.lineHighlightBackground": "#86e9e93d", # 修改鼠标所在行背景色…

自动化测试 —— Web自动化三大报错

Web自动化三大报错有哪些呢?接下来给大家讲讲。 Web自动化三大报错(Exception) 1. Exception1:no such element(没有在页面上找到这个元素) reason1:元素延迟加载了 solution: …

功率放大器有哪些功能和作用

功率放大器是一种电子设备,主要用于将输入的低功率信号放大为更大的功率信号。功率放大器的主要功能和作用包括: 信号放大:功率放大器可以将输入的低功率信号放大为更大的功率信号。这对于一些需要输出更大功率的应用来说非常重要&#xff0c…

外包干了3年,技术退步太明显了。。。。。

先说一下自己的情况,本科生生,18年通过校招进入武汉某软件公司,干了差不多3年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…

腾讯云服务器购买:腾讯云服务器购买指南一步步全流程攻略

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动机,选择范围窄,但是…

正点原子高速无线下载器下载bin文件

有时候需要帮忙调试,直接下载写好代码的bin文件比较快,所以找到这个方式,关于keil如何生成bin文件可以看上篇文章,其他IDE生成方式我就遇到再说了,可以自己在网上搜教程。 关于正点原子的高速无线下载器可以去下载官方…

vrep学习笔记8——将vrep中graph文件导出为csv.文件,并导入matlab中绘制曲线图

在机械臂仿真过程中,使用vrep中的graph图表功能绘制出的曲线不够清晰,如何将graph中的图表数据导出为csv文件,并使用matlab绘制出同样的曲线图呢? 1.将vrep中的graph导出为csv文件 首先选中graph如下 选择file-export-selected g…

报错:AttributeError: ‘DataFrame‘ object has no attribute ‘reshape‘

这个错误通常发生在你试图在 Pandas DataFrame 上直接使用 reshape 方法时。reshape 方法通常与 NumPy 数组相关联,而不是 Pandas DataFrame。 如果你正在使用 Pandas DataFrame 并希望重新塑造它,你应该使用 Pandas 的重塑函数,如 pivot、m…

06_W5500_DHCP

1.DHCP协议介绍: DHCP(Dynamic Host Configuration Protocol)是一种用于自动分配IP地址和其他网络配置信息的协议。它允许网络中的设备(如计算机、手机、打印机等)在连接到网络时自动获取IP地址、子网掩码、默认网关、…

geolife笔记:比较不同轨迹相似度方法

1 问题描述 在geolife 笔记:将所有轨迹放入一个DataFrame-CSDN博客中,已经将所有的轨迹放入一个DataFrame中了,我们现在需要比较,在不同的轨迹距离度量方法下,轨迹相似度的效果。 这里采用论文笔记:Deep R…

前沿技术|张磊:RR22 Blazing Fast PSI 实现介绍

“隐语”是开源的可信隐私计算框架,内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择,提供丰富的联邦学习算法和差分隐私机制 开源项目 github.com/secretflow gitee.com/secretflow ​ 11月25日,「隐语开源社区 Meetup西安站」顺利举…

Pika:AIGC新秀,视频生成产业或迎来GPT时刻

今天分享的AIGC系列深度研究报告:《Pika:AIGC新秀,视频生成产业或迎来GPT时刻》。 (报告出品方:中泰证券) 报告共计:11页 Pika:专注Text to Video生成场景,支持3D和动漫…

从视频中提取图片,轻松制作专属视频封面

你是否曾经为如何制作一个吸引人的视频封面而烦恼?现在,我们将向你展示如何从视频中提取图片,并轻松制作专属的视频封面。无论你是视频编辑新手,还是经验丰富的专业人士,这个技巧都能够帮助你快速提升你的视频品质。 …

时间戳与QDateTime转换,以及QString转时间戳

1、主要有时间戳->QDateTime,QDateTime->QString 2、同时QString->QDateTime,QDateTime->时间戳 详情见代码&#xff1a; //QDateTime转时间戳qint64 time QDateTime::currentSecsSinceEpoch();double nowTime (double)time;qDebug()<<"nowTime1111…
最新文章