百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

每天一个Python小技巧,用Python 画个哆啦a梦,文末还有学习视频

itomcoil 2025-01-21 18:35 14 浏览

文末有小编给大家准备的资料,需要的关注小编直接私信“学习”来领取哦

见网络上有人用Python 画出来个多啦A梦,很是新奇,来来来,我们看一下他们主要用到的库。

其实主要用的库就一个 turtle 库

先说明一下turtle绘图的基础知识:

1. 画布(canvas)

画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置

1.1 设置画布大小

turtle.screensize(canvwidth=None, canvheight=None, bg=None)参数分别为画布的宽(单位像素), 高, 背景颜色

如:

turtle.screensize(800, 600, "green")

turtle.screensize() #返回默认大小(400, 300)

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心

如:

turtle.setup(width=0.6, height=0.6)

turtle.setup(width=800, height=800, startx=100, starty=100)

2. 画笔

2.1 画笔的状态

在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟. 这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态

2.2 画笔的属性

画笔(画笔的属性,颜色、画线的宽度)1) turtle.pensize():设置画笔的宽度;2) turtle.pencolor(); 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组,

>>> pencolor('brown')

>>> tup = (0.2, 0.8, 0.55)

>>> pencolor(tup)

>>> pencolor() '#33cc8c'

3) turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快

2.3 绘图命令

操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令

(1)画笔运动命令:

命令说明turtle.forward(distance)向当前画笔方向移动distance像素长turtle.backward(distance)向当前画笔相反方向移动distance像素长度turtle.right(degree)顺时针移动degree°turtle.left(degree)逆时针移动degree°turtle.pendown()移动时绘制图形,缺省时也为绘制turtle.goto(x,y)将画笔移动到坐标为x,y的位置turtle.penup()移动时不绘制图形,提起笔,用于另起一个地方绘制时用turtle.speed(speed)画笔绘制的速度范围[0,10]整数turtle.circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

(2)画笔控制命令:

命令说明turtle.pensize(width)绘制图形时的宽度turtle.pencolor()画笔颜色turtle.fillcolor(colorstring)绘制图形的填充颜色turtle.color(color1, color2)同时设置pencolor=color1, fillcolor=color2turtle.filling()返回当前是否在填充状态turtle.begin_fill()准备开始填充图形turtle.end_fill()填充完成;turtle.hideturtle()隐藏箭头显示;turtle.showturtle()与hideturtle()函数对应

(3) 全局控制命令

命令说明turtle.clear()清空turtle窗口,但是turtle的位置和状态不会改变turtle.reset()清空窗口,重置turtle状态为起始状态turtle.undo()撤销上一个turtle动作turtle.isvisible()返回当前turtle是否可见stamp()复制当前图形turtle.write(s[,font=("font-name",font_size,"font_type")])写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项

3. 命令详解

3.1 turtle.circle(radius, extent=None, steps=None)描述: 以给定半径画圆参数:radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆extent(弧度) (optional);steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)

举例:circle(50) # 整圆;circle(50,steps=3) # 三角形;circle(120, 180) # 半圆

4. 绘图举例

4.1 太阳花

import turtle as timport time

t.color("red", "yellow")

t.speed(10)

t.begin_fill()for _ in range(50):

t.forward(200)

t.left(170)

end_fill()

time.sleep(1)

4.2 绘制小蟒蛇

import turtledef drawSnake(rad, angle, len, neckrad):

for _ in range(len):

turtle.circle(rad, angle)

turtle.circle(-rad, angle)

turtle.circle(rad, angle/2)

turtle.forward(rad/2) # 直线前进

turtle.circle(neckrad, 180)

turtle.forward(rad/4)if __name__ == "__main__":

turtle.setup(1500, 1400, 0, 0)

turtle.pensize(30) # 画笔尺寸

turtle.pencolor("green")

turtle.seth(-40) # 前进的方向

drawSnake(70, 80, 2, 15)

4.3 绘制五角星

import turtle import time

turtle.pensize(5)

turtle.pencolor("yellow")

turtle.fillcolor("red")

turtle.begin_fill()for _ in range(5):

turtle.forward(200)

turtle.right(144)

turtle.end_fill()

time.sleep(2)

turtle.penup()

turtle.goto(-150,-120)

turtle.color("violet")

turtle.write("Done", font=('Arial', 40, 'normal'))

time.sleep(1)

有了基础知识以后我们看下怎么画出多啦A梦

# !/usr/bin/env python3

from turtle import *

# 无轨迹跳跃

def my_goto(x, y):

penup()

goto(x, y)

pendown()

# 眼睛

def eyes():

fillcolor("#ffffff")

begin_fill()

tracer(False)

a = 2.5

for i in range(120):

if 0 <= i < 30 or 60 <= i < 90:

a -= 0.05

lt(3)

fd(a)

else:

a += 0.05

lt(3)

fd(a)

tracer(True)

end_fill()

# 胡须

def beard():

my_goto(-32, 135)

seth(165)

fd(60)

my_goto(-32, 125)

seth(180)

fd(60)

my_goto(-32, 115)

seth(193)

fd(60)

my_goto(37, 135)

seth(15)

fd(60)

my_goto(37, 125)

seth(0)

fd(60)

my_goto(37, 115)

seth(-13)

fd(60)

# 嘴巴

def mouth():

my_goto(5, 148)

seth(270)

fd(100)

seth(0)

circle(120, 50)

seth(230)

circle(-120, 100)

# 围巾

def scarf():

fillcolor('#e70010')

begin_fill()

seth(0)

fd(200)

circle(-5, 90)

fd(10)

circle(-5, 90)

fd(207)

circle(-5, 90)

fd(10)

circle(-5, 90)

end_fill()

# 鼻子

def nose():

my_goto(-10, 158)

seth(315)

fillcolor('#e70010')

begin_fill()

circle(20)

end_fill()

# 黑眼睛

def black_eyes():

seth(0)

my_goto(-20, 195)

fillcolor('#000000')

begin_fill()

circle(13)

end_fill()

pensize(6)

my_goto(20, 205)

seth(75)

circle(-10, 150)

pensize(3)

my_goto(-17, 200)

seth(0)

fillcolor('#ffffff')

begin_fill()

circle(5)

end_fill()

my_goto(0, 0)

# 脸

def face():

fd(183)

lt(45)

fillcolor('#ffffff')

begin_fill()

circle(120, 100)

seth(180)

# print(pos())

fd(121)

pendown()

seth(215)

circle(120, 100)

end_fill()

my_goto(63.56, 218.24)

seth(90)

eyes()

seth(180)

penup()

fd(60)

pendown()

seth(90)

eyes()

penup()

seth(180)

fd(64)

# 头型

def head():

penup()

circle(150, 40)

pendown()

fillcolor('#00a0de')

begin_fill()

circle(150, 280)

end_fill()

# 画哆啦A梦

def Doraemon():

# 头部

head()

# 围脖

scarf()

# 脸

face()

# 红鼻子

nose()

# 嘴巴

mouth()

# 胡须

beard()

# 身体

my_goto(0, 0)

seth(0)

penup()

circle(150, 50)

pendown()

seth(30)

fd(40)

seth(70)

circle(-30, 270)

fillcolor('#00a0de')

begin_fill()

seth(230)

fd(80)

seth(90)

circle(1000, 1)

seth(-89)

circle(-1000, 10)

# print(pos())

seth(180)

fd(70)

seth(90)

circle(30, 180)

seth(180)

fd(70)

# print(pos())

seth(100)

circle(-1000, 9)

seth(-86)

circle(1000, 2)

seth(230)

fd(40)

# print(pos())

circle(-30, 230)

seth(45)

fd(81)

seth(0)

fd(203)

circle(5, 90)

fd(10)

circle(5, 90)

fd(7)

seth(40)

circle(150, 10)

seth(30)

fd(40)

end_fill()

# 左手

seth(70)

fillcolor('#ffffff')

begin_fill()

circle(-30)

end_fill()

# 脚

my_goto(103.74, -182.59)

seth(0)

fillcolor('#ffffff')

begin_fill()

fd(15)

circle(-15, 180)

fd(90)

circle(-15, 180)

fd(10)

end_fill()

my_goto(-96.26, -182.59)

seth(180)

fillcolor('#ffffff')

begin_fill()

fd(15)

circle(15, 180)

fd(90)

circle(15, 180)

fd(10)

end_fill()

# 右手

my_goto(-133.97, -91.81)

seth(50)

fillcolor('#ffffff')

begin_fill()

circle(30)

end_fill()

# 口袋

my_goto(-103.42, 15.09)

seth(0)

fd(38)

seth(230)

begin_fill()

circle(90, 260)

end_fill()

my_goto(5, -40)

seth(0)

fd(70)

seth(-90)

circle(-70, 180)

seth(0)

fd(70)

# 铃铛

my_goto(-103.42, 15.09)

fd(90)

seth(70)

fillcolor('#ffd200')

# print(pos())

begin_fill()

circle(-20)

end_fill()

seth(170)

fillcolor('#ffd200')

begin_fill()

circle(-2, 180)

seth(10)

circle(-100, 22)

circle(-2, 180)

seth(180 - 10)

circle(100, 22)

end_fill()

goto(-13.42, 15.09)

seth(250)

circle(20, 110)

seth(90)

fd(15)

dot(10)

my_goto(0, -150)

# 画眼睛

black_eyes()

if __name__ == '__main__':

screensize(800, 600, "#f0f0f0")

pensize(3) # 画笔宽度

speed(9) # 画笔速度

Doraemon()

my_goto(100, -300)

mainloop()

看下效果

看看 小猪佩奇的实现方式:

# -*- coding: utf-8 -*-

"""

@Time: 2018/9/5

@Author: songhao

@微信公众号: zeropython

@File: peiqi.py

"""

from turtle import *

def nose(x, y): # 鼻子

pu()

goto(x, y)

pd()

seth(-30)

begin_fill()

a = 0.4

for i in range(120):

if 0 <= i < 30 or 60 <= i < 90:

a = a + 0.08

lt(3) # 向左转3度

fd(a) # 向前走a的步长

else:

a = a - 0.08

lt(3)

fd(a)

end_fill()

pu()

seth(90)

fd(25)

seth(0)

fd(10)

pd()

pencolor(255, 155, 192)

seth(10)

begin_fill()

circle(5)

color(160, 82, 45)

end_fill()

pu()

seth(0)

fd(20)

pd()

pencolor(255, 155, 192)

seth(10)

begin_fill()

circle(5)

color(160, 82, 45)

end_fill()

def head(x, y): # 头

color((255, 155, 192), "pink")

pu()

goto(x, y)

seth(0)

pd()

begin_fill()

seth(180)

circle(300, -30)

circle(100, -60)

circle(80, -100)

circle(150, -20)

circle(60, -95)

seth(161)

circle(-300, 15)

pu()

goto(-100, 100)

pd()

seth(-30)

a = 0.4

for i in range(60):

if 0 <= i < 30 or 60 <= i < 90:

a = a + 0.08

lt(3) # 向左转3度

fd(a) # 向前走a的步长

else:

a = a - 0.08

lt(3)

fd(a)

end_fill()

def ears(x, y): # 耳朵

color((255, 155, 192), "pink")

pu()

goto(x, y)

pd()

begin_fill()

seth(100)

circle(-50, 50)

circle(-10, 120)

circle(-50, 54)

end_fill()

pu()

seth(90)

fd(-12)

seth(0)

fd(30)

pd()

begin_fill()

seth(100)

circle(-50, 50)

circle(-10, 120)

circle(-50, 56)

end_fill()

def eyes(x, y): # 眼睛

color((255, 155, 192), "white")

pu()

seth(90)

fd(-20)

seth(0)

fd(-95)

pd()

begin_fill()

circle(15)

end_fill()

color("black")

pu()

seth(90)

fd(12)

seth(0)

fd(-3)

pd()

begin_fill()

circle(3)

end_fill()

color((255, 155, 192), "white")

pu()

seth(90)

fd(-25)

seth(0)

fd(40)

pd()

begin_fill()

circle(15)

end_fill()

color("black")

pu()

seth(90)

fd(12)

seth(0)

fd(-3)

pd()

begin_fill()

circle(3)

end_fill()

def cheek(x, y): # 腮

color((255, 155, 192))

pu()

goto(x, y)

pd()

seth(0)

begin_fill()

circle(30)

end_fill()

def mouth(x, y): # 嘴

color(239, 69, 19)

pu()

goto(x, y)

pd()

seth(-80)

circle(30, 40)

circle(40, 80)

def body(x, y): # 身体

color("red", (255, 99, 71))

pu()

goto(x, y)

pd()

begin_fill()

seth(-130)

circle(100, 10)

circle(300, 30)

seth(0)

fd(230)

seth(90)

circle(300, 30)

circle(100, 3)

color((255, 155, 192), (255, 100, 100))

seth(-135)

circle(-80, 63)

circle(-150, 24)

end_fill()

def hands(x, y): # 手

color((255, 155, 192))

pu()

goto(x, y)

pd()

seth(-160)

circle(300, 15)

pu()

seth(90)

fd(15)

seth(0)

fd(0)

pd()

seth(-10)

circle(-20, 90)

pu()

seth(90)

fd(30)

seth(0)

fd(237)

pd()

seth(-20)

circle(-300, 15)

pu()

seth(90)

fd(20)

seth(0)

fd(0)

pd()

seth(-170)

circle(20, 90)

def foot(x, y): # 脚

pensize(10)

color((240, 128, 128))

pu()

goto(x, y)

pd()

seth(-90)

fd(40)

seth(-180)

color("black")

pensize(15)

fd(20)

pensize(10)

color((240, 128, 128))

pu()

seth(90)

fd(40)

seth(0)

fd(90)

pd()

seth(-90)

fd(40)

seth(-180)

color("black")

pensize(15)

fd(20)

def tail(x, y): # 尾巴

pensize(4)

color((255, 155, 192))

pu()

goto(x, y)

pd()

seth(0)

circle(70, 20)

circle(10, 330)

circle(70, 30)

def setting(): # 参数设置

pensize(4)

hideturtle()

colormode(255)

color((255, 155, 192), "pink")

setup(840, 500)

speed(10)

def main():

setting() # 画布、画笔设置

nose(-100, 100) # 鼻子

head(-69, 167) # 头

ears(0, 160) # 耳朵

eyes(0, 140) # 眼睛

cheek(80, 10) # 腮

mouth(-20, 30) # 嘴

body(-32, -8) # 身体

hands(-56, -45) # 手

foot(2, -177) # 脚

tail(148, -155) # 尾巴

done() # 结束

main()

其实画图主要还是坐标和尺寸

Python入门学习视频

Python450集视频资料奉上,高清视频资料,400G资源,无偿分享,随着人工智能的兴起发展,Python技术的流行就是你步入高薪行业的必经之路

Python具有简单,易学,免费,开源,可移植,可嵌入,可拓展,面向对象,强大的库等优点

本视频是面向编程零基础的Python入门教程,内容涵盖了Python的基础知识和初步应用。以较轻快的风格,向零基础学习者介绍了一门时下比较流行的、并且用途比较广泛的编程语言。可以让大家快速入门了解~

需要的关注小编直接私信“学习”来领取哦

需要的关注小编直接私信“学习”来领取哦

886

相关推荐

MySql安装与使用

介绍mysql是目前最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件...

使用AI来搭建一个用户系统,步骤应该是怎样的呢?

我给AI的第一个问题是这样的:创建一个java21+springboot3.4+mysql21的一个用户系统,需要使用JWT,支持多语言,使用swagger,这个用户系统都应该包含哪...

Mysql 8.4数据库安装、新建用户和数据库、表单

1、下载MySQL数据库yuminstall-ywgetperlnet-toolslibtirpc#安装wget和perl、net-tools、libtirpcwgethtt...

介绍如何在 MySQL 中创建新用户并授予权限?

MySQL是一个开源的关系型数据库管理系统,常用于存储和管理大量的结构化数据。在使用MySQL进行数据管理时,为了安全和方便管理,通常需要创建新用户并授予相应的权限。本文将介绍如何在MySQL...

Mysql创建用户和权限管理

MySQL是一个多用户的数据库,最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作。如果有其他用户想使用MySQL,那么...

Mysql:创建用户详解

1、创建并授权用户--创建可从任何主机连接的用户CREATEUSER'myuser'@'%'IDENTIFIEDBY'mypassword'...

Python 实现【字符匹配】

defis_match(s,pattern):m,n=len(s),len(pattern)dp=[[False]*(n+1)for_inrange...

Python自动化:openpyxl工作簿、工作表相关操作

新建工作簿、工作表importopenpyxl#创建空白工作簿,会自动生成一个工作表:Sheetwb=openpyxl.Workbook()#新建工作表#create_sheet...

python每日一练之三数排序

概述今天主要分享一个三树排序的实例,大家可以自己测试玩一下~需求输入三个整数x,y,z,请把这三个数由小到大输出。方法一:如果是要练练手就随便找个排序算法实现一下#usr/bin/python#...

Python输出语句print()

Python中的输出语句主要通过内置函数print()实现,它可以灵活输出文本、变量、表达式结果等内容到控制台或其他文件。以下是详细介绍及示例:一、print()基本语法print(*object...

Python设置excel表格格式,这3个属性6个模块,要表格好看

前言:通过前面两篇文章,我们用Python处理excel数据得到了结果并保存了文件。打开文件会发现,文件里表格是没有设置格式的,还需手动调整行高列宽等样式,很麻烦。其实,通过Python库模块,能轻松...

python入门-day5-循环语句

以下是为“Day5:循环语句”设计的详细学习任务计划。这个任务旨在帮助初学者掌握Python中的循环语句(for和while),并通过实践理解它们的应用场景。Day5:循环语句学习目标...

Python基础编程必备!涵盖常见语法与操作的代码示例合集

以下是一份Python基础代码示例合集,涵盖了常见的语法和操作,适合初学者快速掌握基本编程概念:1.基础语法python#打印输出print("Hello,World!")#变...

Python循环语句实用教程

一、循环基础1.while循环基本语法:while条件表达式:循环体代码while循环流程图:应用示例:#简单计数器count=0whilecount<5:...

在 Python 中如何向一个已排序的数组(列表) 中插入一个数呢

在Python中如何向一个已排序的数组(列表)中插入一个数呢?方法有很多种,关键在于原来数组是什么样的排序,用到啥排序方法效率高,就用哪种。我们来练习其中的几种插入方法,另外也掌握下遍历数组的...