Python万圣节礼物

万圣节礼物

文章目录

  • 系列文章
  • 前言
  • 小海龟快速入门
  • 万圣节蝙蝠
  • 万圣节南瓜头
  • 万圣节礼物
  • 尾声

系列文章

序号文章目录直达链接
1浪漫520表白代码https://want595.blog.csdn.net/article/details/130666881
2满屏表白代码https://want595.blog.csdn.net/article/details/129794518
3跳动的爱心https://want595.blog.csdn.net/article/details/129503123
4漂浮爱心https://want595.blog.csdn.net/article/details/128808630
5爱心光波https://want595.blog.csdn.net/article/details/132311588
6流星雨https://want595.blog.csdn.net/article/details/129395465
7满天星https://want595.blog.csdn.net/article/details/129572082
8烟花秀https://want595.blog.csdn.net/article/details/128746664
9圣诞树https://want595.blog.csdn.net/article/details/128213770
10雪花代码https://want595.blog.csdn.net/article/details/129038108
11模拟星空https://want595.blog.csdn.net/article/details/129948882
12生日蛋糕https://want595.blog.csdn.net/article/details/129694998
13樱花树https://want595.blog.csdn.net/article/details/130350743
14五彩气球https://want595.blog.csdn.net/article/details/130950744
15七彩花朵https://want595.blog.csdn.net/article/details/130897838
16恶搞代码https://want595.blog.csdn.net/article/details/131274862
17代码雨https://want595.blog.csdn.net/article/details/132574687
18中秋星空https://want595.blog.csdn.net/article/details/132910075
19国庆祝福https://want595.blog.csdn.net/article/details/133427031
20皮卡丘https://want595.blog.csdn.net/article/details/133783136
21玫瑰花https://want595.blog.csdn.net/article/details/133851128
22名侦探柯南https://want595.blog.csdn.net/article/details/133903847
23万圣节蝙蝠https://want595.blog.csdn.net/article/details/133935474
24南瓜头https://want595.blog.csdn.net/article/details/133973340
25万圣节礼物https://want595.blog.csdn.net/article/details/134011397

前言

万圣节即将来临,快来领取博主给大家准备的礼物吧!

小海龟快速入门

Python的小海龟(Turtle Graphics)是一个简单而有趣的绘图库,适合初学者入门学习编程。它允许你使用Python语言对图形进行绘制,通过简单的命令就能创造出各种有趣的图形。在本文中,我将为你提供一个关于Python小海龟绘图的入门简介。

小海龟绘图可以追溯到Logo语言,它是由Seymour Papert在20世纪60年代开发的。而在Python中,我们可以使用turtle库来实现类似的功能。

首先,我们需要在Python中导入turtle库。可以使用以下代码来实现:

import turtle

现在,我们可以创建一个海龟实例,并命名为my_turtle

my_turtle = turtle.Turtle()

海龟实例是一个图形窗口,你可以在其中绘制图形。它有一个默认的方向,朝向屏幕的右侧。

让我们来尝试一些基本的绘图操作。例如,绘制一个正方形,代码如下:

my_turtle.forward(100)
my_turtle.right(90)
my_turtle.forward(100)
my_turtle.right(90)
my_turtle.forward(100)
my_turtle.right(90)
my_turtle.forward(100)

在这个例子中,我们使用forward()方法向前绘制一条直线,使用right()方法向右转动一定角度。通过不断的重复这两个操作,我们可以绘制出一个正方形。

现在,我们尝试绘制一个更复杂的图形,比如一个五角星。代码如下:

for i in range(5):
    my_turtle.forward(100)
    my_turtle.right(144)

在这个例子中,我们使用for循环来重复执行一系列操作。forward()方法和right()方法的参数可以根据你的需要调整,以实现想要的图形效果。

除了基本的直线和角度操作之外,turtle库还提供了其他一些功能,例如改变画笔的颜色、粗细、移动、填充等操作。你可以根据需要来探索这些功能。

最后,当你完成绘图后,记得使用以下代码来保持图形窗口打开,以便查看你的绘图结果:

turtle.done()

这是一个简单的Python小海龟绘图入门简介。通过掌握这些基本的概念和操作,你可以开始创造出各种有趣的图形和艺术作品。希望这篇简介对你有所帮助,祝你在学习Python小海龟绘图过程中取得成功!

万圣节蝙蝠

让我们先从一只小蝙蝠开始吧!

蝙蝠

程序设计

import turtle as t
k = 0.5

t.title("蝙蝠")
t.setup(0.5, 0.5)
t.begin_fill()
t.fillcolor('black')
t.forward(k*10)
t.setheading(75)
t.forward(k*35)
t.setheading(-75)
t.forward(k*55)
t.setheading(0)
t.circle(k*40,90)
t.right(90)
t.forward(k*100)
t.left(180)
t.circle(k*100,90)
t.setheading(180)
t.circle(k*70,90)
t.left(180)
t.circle(k*70,90)
t.right(90)
t.circle(k*100,90)
t.right(180)
t.forward(k*100)
t.right(90)
t.circle(k*40,90)
t.setheading(75)
t.forward(k*55)
t.setheading(-75)
t.forward(k*35)
t.setheading(0)
t.forward(k*10)
t.end_fill()
t.mainloop()

程序分析

这段代码利用了turtle库,在画布上绘制了一个黑色的蝙蝠。下面是代码具体的分析:

  1. 导入turtle库,给它取了别名t。
import turtle as t
  1. 设定窗口标题和窗口大小。这里窗口大小是默认画布大小的一半。
t.title("蝙蝠")
t.setup(0.5, 0.5)
  1. 开始填充,填充颜色为黑色。
t.begin_fill()
t.fillcolor('black')
  1. 先向前走一段距离,然后转向75度,向右上方画出一条线段,长度为35k,然后再转向-75度,向右下方画出一条线段,长度为55k。最后转向0度,以当前位置为圆心,画出一个半径为40k的1/4圆弧。这些操作就勾勒出了蝙蝠的头部和身体的轮廓。
t.forward(k*10)
t.setheading(75)
t.forward(k*35)
t.setheading(-75)
t.forward(k*55)
t.setheading(0)
t.circle(k*40,90)
  1. 向右走100k,然后转向180度,以当前位置为圆心,画出一个半径为100k的1/4圆弧,这样就画出了蝙蝠的翅膀。
t.right(90)
t.forward(k*100)
t.left(180)
t.circle(k*100,90)
  1. 接下来,先转向180度,以当前位置为圆心,画出一个半径为70k的1/4圆弧,然后再转向180度,以当前位置为圆心,画出一个半径为70k的1/4圆弧,这样就画出了蝙蝠的身体下半部分和左侧翅膀的轮廓。
t.setheading(180)
t.circle(k*70,90)
t.left(180)
t.circle(k*70,90)
  1. 接着,向右转90度,以当前位置为圆心,画出一个半径为100k的1/4圆弧,这样就画出了蝙蝠的身体上半部分和右侧翅膀的轮廓。
t.right(90)
t.circle(k*100,90)
  1. 向右转180度,向前走100k,然后右转90度,以当前位置为圆心,画出一个半径为40k的1/4圆弧,这样就画出了蝙蝠的尾部和右侧翅膀后部的轮廓。
t.right(180)
t.forward(k*100)
t.right(90)
t.circle(k*40,90)
  1. 最后,以当前位置为起点,向左上方和左下方分别画出一条线段,长度为35k和55k,然后转向0度,向前走10k,这样就画出了蝙蝠的左侧翅膀前部和身体的轮廓。
t.setheading(75)
t.forward(k*55)
t.setheading(-75)
t.forward(k*35)
t.setheading(0)
t.forward(k*10)
  1. 结束填充,并进入消息循环等待事件发生。
t.end_fill()
t.mainloop()

万圣节南瓜头

万圣节怎么能少的了南瓜头呢~

南瓜头

程序设计

import turtle

def init():
    turtle.setup(1.0,1.0)
    turtle.speed(10)
    turtle.hideturtle()
    turtle.bgcolor('orange')

def outline():
    turtle.color('#CF5E1A', '#CF5E1A')
    turtle.penup()
    turtle.goto(250, 30)
    turtle.pendown()
    turtle.seth(90)
    turtle.begin_fill()
    for j in range(25):
        turtle.fd(j)
        turtle.left(3.6)
    for j in range(25, 0, -1):
        turtle.fd(j)
        turtle.left(3.6)
    turtle.seth(-90)
    turtle.circle(254, 180)
    turtle.end_fill()

def eyes(args):
    for items in args:
        position, angle, direction = items
        turtle.pensize(6)
        turtle.penup()
        turtle.goto(position, 0)
        turtle.pendown()
        turtle.color('#4C180D', '#4C180D')
        turtle.begin_fill()
        turtle.seth(angle)
        for j in range(55):
            turtle.fd(3)
            if direction:
                turtle.left(3)  # 左转3度
            else:
                turtle.right(3)  # 右转3度
        turtle.goto(position, 0)
        turtle.end_fill()
def nose():
    # 鼻子
    turtle.penup()
    turtle.goto(0, 0)
    turtle.seth(180)
    turtle.pendown()
    turtle.begin_fill()
    turtle.circle(50, steps=3)
    turtle.end_fill()


def mouth():
    # 嘴巴
    turtle.color('#F9D503', '#F9D503')
    turtle.pensize(6)
    turtle.penup()
    turtle.penup()
    turtle.goto(-150, -100)
    turtle.pendown()
    turtle.begin_fill()
    turtle.seth(-30)
    turtle.fd(100)
    turtle.left(90)
    turtle.fd(30)
    turtle.right(90)
    turtle.fd(60)
    turtle.left(60)
    turtle.fd(60)
    turtle.right(90)
    turtle.fd(30)
    turtle.left(90)
    turtle.fd(100)
    turtle.end_fill()
    turtle.done()

def tail():
    turtle.penup()
    turtle.goto(0, 180)
    turtle.pendown()
    turtle.color('#2E3C01')
    turtle.seth(100)
    turtle.pensize(25)
    turtle.circle(60, 100)

turtle.tracer(0)
init()
outline()
tail()
eyes_items = [(-60, 230, 0), (60, -50, 1)]
eyes(eyes_items)
nose()
mouth()
turtle.done()

程序分析

这段代码是利用turtle库在画布上绘制了一个南瓜头。下面是代码具体的分析:

  1. 导入turtle库。
import turtle
  1. 定义一个init函数,用于初始化画布。窗口大小设置为1.0 x 1.0,背景色为橙色,画笔速度为10。
def init():
    turtle.setup(1.0,1.0)
    turtle.speed(10)
    turtle.hideturtle()
    turtle.bgcolor('orange')
  1. 定义一个outline函数,用于绘制南瓜头的轮廓。先将画笔移动到(250, 30)的位置,然后以该点为起点,向左右两侧交替绘制线段和圆弧,形成南瓜头的轮廓线。最后以圆弧为底部,填充橙色,完成南瓜头轮廓的绘制。
def outline():
    turtle.color('#CF5E1A', '#CF5E1A')
    turtle.penup()
    turtle.goto(250, 30)
    turtle.pendown()
    turtle.seth(90)
    turtle.begin_fill()
    for j in range(25):
        turtle.fd(j)
        turtle.left(3.6)
    for j in range(25, 0, -1):
        turtle.fd(j)
        turtle.left(3.6)
    turtle.seth(-90)
    turtle.circle(254, 180)
    turtle.end_fill()
  1. 定义一个eyes函数,用于绘制南瓜头的眼睛。函数接受一个列表参数args,其中每个元素表示一个眼睛的位置、角度和方向。在函数中,根据参数信息,将画笔移动到眼睛位置,然后按照一定的角度和方向绘制眼睛的轮廓线,最后填充黑色,完成眼睛绘制。
def eyes(args):
    for items in args:
        position, angle, direction = items
        turtle.pensize(6)
        turtle.penup()
        turtle.goto(position, 0)
        turtle.pendown()
        turtle.color('#4C180D', '#4C180D')
        turtle.begin_fill()
        turtle.seth(angle)
        for j in range(55):
            turtle.fd(3)
            if direction:
                turtle.left(3)  # 左转3度
            else:
                turtle.right(3)  # 右转3度
        turtle.goto(position, 0)
        turtle.end_fill()
  1. 定义一个nose函数,用于绘制南瓜头的鼻子。先将画笔移动到画布中心,然后以中心点为圆心,画出一个半径为50的正三角形,最后填充黑色,完成鼻子绘制。
def nose():
    turtle.penup()
    turtle.goto(0, 0)
    turtle.seth(180)
    turtle.pendown()
    turtle.begin_fill()
    turtle.circle(50, steps=3)
    turtle.end_fill()
  1. 定义一个mouth函数,用于绘制南瓜头的嘴巴。先将画笔移动到(-150, -100)的位置,然后按照一定的角度和方向绘制嘴巴的轮廓线,最后填充黄色,完成嘴巴的绘制。
def mouth():
    turtle.color('#F9D503', '#F9D503')
    turtle.pensize(6)
    turtle.penup()
    turtle.penup()
    turtle.goto(-150, -100)
    turtle.pendown()
    turtle.begin_fill()
    turtle.seth(-30)
    turtle.fd(100)
    turtle.left(90)
    turtle.fd(30)
    turtle.right(90)
    turtle.fd(60)
    turtle.left(60)
    turtle.fd(60)
    turtle.right(90)
    turtle.fd(30)
    turtle.left(90)
    turtle.fd(100)
    turtle.end_fill()
    turtle.done()
  1. 定义一个tail函数,用于绘制南瓜头的尾巴。先将画笔移动到(0, 180)的位置,然后以该点为起点,按照一定半径和角度绘制尾巴的轮廓线,最后完成尾巴的绘制。
def tail():
    turtle.penup()
    turtle.goto(0, 180)
    turtle.pendown()
    turtle.color('#2E3C01')
    turtle.seth(100)
    turtle.pensize(25)
    turtle.circle(60, 100)
  1. 最后,调用turtle的tracer函数关闭动画效果,然后依次调用上述函数,完成南瓜头的绘制。
turtle.tracer(0)
init()
outline()
tail()
eyes_items = [(-60, 230, 0), (60, -50, 1)]
eyes(eyes_items)
nose()
mouth()
turtle.done()

万圣节礼物

让我们将蝙蝠和南瓜头结合一下吧!

万圣节礼物
程序设计

import turtle as tu
import random as ra
import math

tu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)
tu.title("万圣节")
tu.bgcolor('darkorange')
t = tu.Pen()
t.ht()
colors = ['black']
class Bat():    #每个蝙蝠(蝙蝠类)
    def __init__(self):
……(完整代码关注文末公众号免费领取哦)

程序分析

这是一段python代码,用turtle模块创建了一个万圣节的场景,包括南瓜和蝙蝠。其中,南瓜的形状和颜色都很逼真,蝙蝠则实现了飞舞的动态效果。

代码中定义了一个Bat类来创建蝙蝠对象,包含蝙蝠的大小、位置、颜色、移动速度等属性。move()方法实现了蝙蝠随机移动的效果,当蝙蝠飞出画布时,重新生成一个蝙蝠对象。pumpkin()方法用turtle画出了南瓜的形状和特点,包括南瓜的圆润和嘴巴的扭曲。

最后,在主程序中实例化了100个蝙蝠对象,并使用while循环使它们在画布中不断移动,同时更新画面,显示出动态效果。

整段代码用到了python的一些基本语法和turtle模块的函数,如setup()、screensize()、Pen()、begin_fill()、end_fill()等。通过这个小例子,我们可以了解到turtle的绘图功能,以及python类的基本使用。

尾声

感谢小伙伴们的支持吖,祝大家万圣节快乐哦!

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

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

相关文章

易基因:综合全基因组DNA甲基化和转录组学分析鉴定调控骨骼肌发育潜在基因 | 研究进展

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 DNA甲基化是骨骼肌发育中关键的表观遗传调控机制。但胚胎鸭骨骼肌发育中负责DNA甲基化的调控因子仍然未知。 2023年10月23日,南京农业大学动物科技学院于敏莉副教授团队在《…

Spring全家桶源码解析--2.6 Spring scope 限制bean的作用范围

文章目录 前言一、Scope是什么?二、Scope使用2.1 单例:2.1.1 单例Bean的特点如下:2.1.2 单例设计模式 与单例bean: 2.2 原型bean:2.2.1 原型Bean的特点:2.2.2 原型Bean的销毁: 2.3 Request bean…

Unity中使用VS常用技巧

文章目录 1、Unity预览代码中文显示乱码解决方案2、VS中格式化代码快捷键 1、Unity预览代码中文显示乱码解决方案 ①打开VS,在 扩展 中找到 管理扩展 打开 ②在 管理扩展面板 联机 中搜索 Force UTF-8(No BOM) ,点击下载即可 ③重启VS 如果以前编写的脚…

gpt-4-turbo、gpt-4v、dall-e-3 api实测!

上周GPT大更新,不仅开放了GPT-4-Turbo、GPT-4-Vision等模型api,还发布了GPTs,使得用户能够根据需要定义自己的GPT应用,OpenAI在这波AI革命上又一次震撼世人。 笔者也在上周拿到了几个新模型的api资格,一直盼着可以测试…

C语言题目逻辑实战总结

eg1: 已知有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少 已知:1:三位数 ,2:1-4,3:各不相同, 输出:1:有多少个这样的三位数,2&#xff…

免费内网穿透?让外网能访问到自己的接口springboot,暴露自己的接口给外网

内网穿透?让外网能访问到自己的接口java,暴露自己的接口给外网 内网穿透听着就很吊,不就是把没有备案的服务器暴露出去,给别人访问嘛。 自己免费使用测试的话。 下载一个Cpolar 然后注册一下,进来后,直接…

都dubbo3了,别再用xml了配置dubbo服务了

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 最近项目再准备升级dubbo3,所以打算简单实现一个dubbo3的demo。 来学习一下dubbo dubbo3 dubbo3主要是为了融入云原生打造的 Dubbo 3 提供的核心特性列…

Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能

Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能 Milvus 是全球最快的向量数据库,在最新发布的 Milvus 2.2 benchmark中,Milvus 相比之前的版本,取得了 …

竞赛 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测

文章目录 0 简介1 基于 Keras 用 LSTM 网络做时间序列预测2 长短记忆网络3 LSTM 网络结构和原理3.1 LSTM核心思想3.2 遗忘门3.3 输入门3.4 输出门 4 基于LSTM的天气预测4.1 数据集4.2 预测示例 5 基于LSTM的股票价格预测5.1 数据集5.2 实现代码 6 lstm 预测航空旅客数目数据集预…

PieCloudDB Database 自研内存管理器 ASanAlloc:为产品质量保驾护航

内存管理是计算机科学中至关重要的一部分,它涉及到操作系统、硬件和软件应用之间的动态交互。有效的内存管理可以确保系统的稳定性和安全性,提高系统运行效率,帮助我们最大限度地利用有效的内存资源,合理分配和回收内存&#xff0…

【Linux】进程替换|exec系列函数

文章目录 一、看一看单进程版的进程替换二、进程替换的原理三、多进程版——验证各种程序替换接口exec系列函数execlexeclpexecvexecvp tipsexecleexecve 四、总结 一、看一看单进程版的进程替换 #include<stdio.h> #include<unistd.h> #include<stdlib.h>i…

Elasticsearch的配置学习笔记

文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口&#xff0c;Elasticsearch是用Java语言开发的。 关于Elasticsearch系列笔记&#xff0c;主要从Elasticsearch的配置、核心组件、架构设计、使…

跟着 Tubi 同事吃遍全世界

在过去的一年里&#xff0c;Tubi 北京办公室的 Pantry 非常忙&#xff0c;忙于接收 Tubi 同事从全球各地带回的美食。而我们也有幸跟随慷慨的同事们尝遍了大江南北的味道。 细数这 30 多次美食分享&#xff0c;我们发现&#xff0c;大家分享的不仅是食物&#xff0c;还是…… …

第二证券:尾盘选股方法?

股票出资是一种危险较高的出资办法&#xff0c;因而怎样挑选合适的股票成为出资者面临的重要问题之一。尾盘选股办法就是一种常用的战略。尾盘是指股票商场生意时间的究竟一段时间&#xff0c;通常是下午3点到收盘之间。在这段时间里&#xff0c;生意量较大&#xff0c;不坚决性…

在Python中使用sqlite3进行数据持久化操作

目录 引言 一、安装sqlite3模块 二、创建数据库连接 三、创建游标对象 四、执行SQL命令 五、提交更改 六、关闭连接 七、使用参数化查询 八、使用ORM进行数据操作 九、备份和恢复数据库 十、处理大量数据 十一、优化查询性能 十二、处理并发访问 十三、处理数据持…

仿真算法收敛与初值的关系

问题&#xff1a; 当电路中存在大电容时&#xff0c;由于初值设置不合理可能导致的仿真算法不收敛的问题。 解决方法&#xff1a;设置初始节点值。 疑问&#xff1a;Node set和Initial Condition的区别。 [求助] node set 和initial condition有很么区别呢&#xff1f; 注&…

7-4链表去重

题目 给定一个带整数键值的链表 L&#xff0c;你需要把其中绝对值重复的键值结点删掉。即对每个键值 K&#xff0c;只有第一个绝对值等于 K 的结点被保留。同时&#xff0c;所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15&#xff0c;你需要输出…

前端算法面试之堆排序-每日一练

如果对前端八股文感兴趣&#xff0c;可以留意公重号&#xff1a;码农补给站&#xff0c;总有你要的干货。 今天分享一个非常热门的算法--堆排序。堆的运用非常的广泛&#xff0c;例如&#xff0c;Python中的heapq模块提供了堆排序算法&#xff0c;可以用于实现优先队列&#xf…

C/C++ stm32基础知识超详细讲解(系统性学习day14)

目录 前言 一、ARM和STM32是什么&#xff1f; 二、STM32的开发方式 三、GPIO----寄存器开发方式 1.八种输入输出模式分析 2.寄存器 四、stm32芯片图片 五、怎么学好stm32 总结 前言 stm32的广泛含义及背景&#xff1a; STM32是一款由意法半导体&#xff08;ST&…