用python的turtle库给你画一个头像(猪头)

本文分享了使用Python的Turtle库绘制个性化头像的详细步骤和源代码,包括画脸、眼睛、鼻子等部分,适合初学者练习绘图技能。
部署运行你感兴趣的模型镜像

小白练习python的海龟作图,竟为心爱的ta画下!!
效果图

使用到的海龟绘图命令

命令说明
turtle.screensize()设置屏幕宽高及背景颜色
turtle.setup()设置画布大小
turtle.hideturtle()隐藏画笔
turtle.pensize()设置画笔宽度
turtle.speed()设置画笔速度
turtle.pencolor()设置画笔颜色
turtle.penup()提笔
turtle.pendown()放笔,开始画
turtle.setheading()调转画笔方向
turtle.forward()画笔向前走
turtle.right()画笔向右转
turtle.left()画笔向左转
turtle.goto()跳转画笔位置
turtle.textinput()输入文本
turtle.write()打印文本
turtle.circle()画给定半径的圆
turtle.dot()画给定直径的圆点
turtle.done()将图像留下画布上

话不多说,来看源代码吧~

源代码

在这里插入图片描述

画布和画笔设置

import turtle as a
a.screensize(400,300)//设置屏幕大小
a.setup(width=400,height=300)//设置画布大小
a.pensize(15)//设置画笔宽度
a.speed(5)//设置画笔速度
a.hideturtle()//隐藏画笔

在这里插入图片描述

画脸盘子

a.penup()//提笔
a.goto(-100,100)//移动画笔位置
a.setheading(180)//设置朝向正西
a.pencolor("pink")
a.pendown()//放笔
a.circle(200)

在这里插入图片描述

取名字

a.penup()//取名
a.goto(-150,10)
yourname=a.textinput("请老实回答","你的名字是?")
name=yourname+"崽崽"
a.pendown()
a.write(name,font=("elephant",25,"bold"))//打印文本

在这里插入图片描述

画眼睛

a.penup()//画左眼
a.goto(-200,0)
a.pendown()
a.circle(25)
a.penup()
a.goto(-200,-14)
a.pendown()
a.circle(9)
a.penup()//光晕
a.goto(-190,-20)
a.pencolor("white")
a.pendown()
a.dot(10)

a.penup()//画右眼
a.pencolor("pink")
a.goto(0,0)
a.pendown()
a.circle(25)
a.penup()//光晕
a.goto(0,-14)
a.pendown()
a.circle(9)
a.penup()
a.goto(-10,-20)
a.pencolor("white")
a.pendown()
a.dot(10)

在这里插入图片描述

画鼻子

a.penup()//画鼻子
a.speed(10)//设置画笔速度
a.pencolor("pink")
a.goto(-150,-75)
a.setheading(45)
a.pendown()
for i in range(90):
    a.forward(1.5)
    a.right(1)
for i in range(3): //圆化棱角,每转16度向前走3个像素
    a.right(16)
    a.forward(3)
a.forward(15)
for i in range(3): //圆化棱角
    a.right(16)
    a.forward(3)
a.setheading(225)
for i in range(90):
    a.forward(1.5)
    a.right(1)
for i in range(3): //圆化棱角
    a.right(16)
    a.forward(3)
a.forward(15)
for i in range(3): //圆化棱角
    a.right(16)
    a.forward(3)
a.penup()
a.speed(5)//设置画笔速度
a.goto(-125,-70)//第一条杠
a.setheading(270)
a.pendown()
a.forward(50)
a.penup()
a.goto(-70,-65)//第二条杠
a.pendown()
a.forward(55)

在这里插入图片描述

画嘴巴

a.penup()//画嘴巴
a.speed(10)//设置画笔速度
a.goto(-135,-165)
a.setheading(305)
a.pendown()
for i in range(120):
    a.forward(1)
    a.left(1)    

在这里插入图片描述

画耳朵

a.penup()//画右耳朵
a.speed(5)
a.setheading(0)
a.goto(-17,90)
a.pendown()
a.forward(60)
a.penup()
a.goto(28,75)//跳到下一笔起始位置
a.setheading(45)
a.pendown()
a.forward(110)
a.right(45)
a.forward(40)
a.setheading(225)
a.forward(40)
a.setheading(270)
for i in range(7): //圆化棱角
    a.right(2.5)
    a.forward(10)
a.forward(80)

a.penup()//画左耳朵
a.goto(-183,90)
a.setheading(180)
a.pendown()
a.forward(60)
a.penup()
a.goto(-230,75)//跳到下一笔起始位置
a.setheading(135)
a.pendown()
a.forward(110)
a.left(45)
a.forward(40)
a.setheading(-45)
a.forward(40)
a.setheading(270)
for i in range(10): //圆化棱角
    a.left(2.5)
    a.forward(15)

在这里插入图片描述

画腮红

a.penup()//画左腮红
a.pencolor("tomato")//设置成番茄色
a.goto(-250,-100)
a.setheading(270)
a.pendown()
a.forward(20)
a.penup()
a.goto(-210,-100)
a.pendown()
a.forward(20)

a.penup()//画右腮红
a.goto(10,-100)
a.pendown()
a.forward(20)
a.penup()
a.goto(50,-100)
a.pendown()
a.forward(20)
a.done() //留存图像在画布上

小白感想

虽然图很简单,但还是废了不少功夫,特别是在对坐标位置确定上;而且感觉代码有点太长了,可能是有些地方做的不够精简。继续加油!

献上完整源代码

#!/usr/bin/env python3.7 #指明用什么可执行程序运行这个文件代码
#-*- coding:UTF-8 -*-   #保证能顺利解析中文
#author:Boosirit time:2020/4/5

import turtle as a
a.screensize(400,300)#设置屏幕大小
a.setup(width=400,height=300)#设置画布大小
a.pensize(15)#设置画笔宽度
a.speed(5)#设置画笔速度
a.hideturtle()#隐藏画笔

a.penup()#画脸
a.goto(-100,100)
a.setheading(180)#设置朝向正西
a.pencolor("pink")
a.pendown()
a.circle(200)

a.penup()#取名
a.goto(-150,10)
yourname=a.textinput("请老实回答","你的名字是?")
name=yourname+"崽崽"
a.pendown()
a.write(name,font=("elephant",25,"bold"))#打印文本

a.penup()#画左眼
a.goto(-200,0)
a.pendown()
a.circle(25)
a.penup()
a.goto(-200,-14)
a.pendown()
a.circle(9)
a.penup()#光晕
a.goto(-190,-20)
a.pencolor("white")
a.pendown()
a.dot(10)

a.penup()#画右眼
a.pencolor("pink")
a.goto(0,0)
a.pendown()
a.circle(25)
a.penup()#光晕
a.goto(0,-14)
a.pendown()
a.circle(9)
a.penup()
a.goto(-10,-20)
a.pencolor("white")
a.pendown()
a.dot(10)

a.penup()#画鼻子
a.speed(10)#设置画笔速度
a.pencolor("pink")
a.goto(-150,-75)
a.setheading(45)
a.pendown()
for i in range(90):
    a.forward(1.5)
    a.right(1)
for i in range(3):#圆化棱角,每转16度向前走3个像素
    a.right(16)
    a.forward(3)
a.forward(15)
for i in range(3):#圆化棱角
    a.right(16)
    a.forward(3)
a.setheading(225)
for i in range(90):
    a.forward(1.5)
    a.right(1)
for i in range(3):#圆化棱角
    a.right(16)
    a.forward(3)
a.forward(15)
for i in range(3):#圆化棱角
    a.right(16)
    a.forward(3)
a.penup()
a.speed(5)#设置画笔速度
a.goto(-125,-70)#第一条杠
a.setheading(270)
a.pendown()
a.forward(50)
a.penup()
a.goto(-70,-65)#第二条杠
a.pendown()
a.forward(55)

a.penup()#画嘴巴
a.speed(10)#设置画笔速度
a.goto(-135,-165)
a.setheading(305)
a.pendown()
for i in range(120):
    a.forward(1)
    a.left(1)
    
a.penup()#画右耳朵
a.speed(5)
a.setheading(0)
a.goto(-17,90)
a.pendown()
a.forward(60)
a.penup()
a.goto(28,75)#跳到下一笔起始位置
a.setheading(45)
a.pendown()
a.forward(110)
a.right(45)
a.forward(40)
a.setheading(225)
a.forward(40)
a.setheading(270)
for i in range(7):#圆化棱角
    a.right(2.5)
    a.forward(10)
a.forward(80)

a.penup()#画左耳朵
a.goto(-183,90)
a.setheading(180)
a.pendown()
a.forward(60)
a.penup()
a.goto(-230,75)#跳到下一笔起始位置
a.setheading(135)
a.pendown()
a.forward(110)
a.left(45)
a.forward(40)
a.setheading(-45)
a.forward(40)
a.setheading(270)
for i in range(10):#圆化棱角
    a.left(2.5)
    a.forward(15)
    
a.penup()#画左腮红
a.pencolor("tomato")#设置成番茄色
a.goto(-250,-100)
a.setheading(270)
a.pendown()
a.forward(20)
a.penup()
a.goto(-210,-100)
a.pendown()
a.forward(20)

a.penup()#画右腮红
a.goto(10,-100)
a.pendown()
a.forward(20)
a.penup()
a.goto(50,-100)
a.pendown()
a.forward(20)

a.done()#留存图像在画布上

爱ta,就给ta画个猪头头像吧!

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

import turtle as t def draw_peppa(x_offset=0, y_offset=0, scale=1.0): """绘制小猪佩奇的函数,支持平移和缩放""" t.pensize(4 * scale) t.color((255,155,192), "pink") t.penup() t.goto(-100*scale + x_offset, 100*scale + y_offset) t.pendown() # 鼻子 t.seth(-30) t.begin_fill() a = 0.4 * scale for i in range(120): if 0 <= i < 30 or 60 <= i < 90: a += 0.08 * scale t.lt(3) t.fd(a) else: a -= 0.08 * scale t.lt(3) t.fd(a) t.end_fill() t.penup() t.seth(90) t.fd(25*scale) t.seth(0) t.fd(10*scale) t.pendown() t.pencolor(255,155,192) t.seth(10) t.begin_fill() t.circle(5*scale) t.color(160,82,45) t.end_fill() t.penup() t.seth(0) t.fd(20*scale) t.pendown() t.pencolor(255,155,192) t.seth(10) t.begin_fill() t.circle(5*scale) t.color(160,82,45) t.end_fill() # 头 t.color((255,155,192), "pink") t.penup() t.seth(90) t.fd(41*scale) t.seth(0) t.fd(0) t.pendown() t.begin_fill() t.seth(180) t.circle(300*scale, -30) t.circle(100*scale, -60) t.circle(80*scale, -100) t.circle(150*scale, -20) t.circle(60*scale, -95) t.seth(161) t.circle(-300*scale, 15) t.penup() t.goto(-100*scale + x_offset, 100*scale + y_offset) t.pendown() t.seth(-30) a = 0.4 * scale for i in range(60): if 0 <= i < 30 or 60 <= i < 90: a += 0.08 * scale t.lt(3) t.fd(a) else: a -= 0.08 * scale t.lt(3) t.fd(a) t.end_fill() # 耳朵 t.color((255,155,192), "pink") t.penup() t.seth(90) t.fd(-7*scale) t.seth(0) t.fd(70*scale) t.pendown() t.begin_fill() t.seth(100) t.circle(-50*scale, 50) t.circle(-10*scale, 120) t.circle(-50*scale, 54) t.end_fill() t.penup() t.seth(90) t.fd(-12*scale) t.seth(0) t.fd(30*scale) t.pendown() t.begin_fill() t.seth(100) t.circle(-50*scale, 50) t.circle(-10*scale, 120) t.circle(-50*scale, 56) t.end_fill() # 眼睛 t.color((255,155,192), "white") t.penup() t.seth(90) t.fd(-20*scale) t.seth(0) t.fd(-95*scale) t.pendown() t.begin_fill() t.circle(15*scale) t.end_fill() t.color("black") t.penup() t.seth(90) t.fd(12*scale) t.seth(0) t.fd(-3*scale) t.pendown() t.begin_fill() t.circle(3*scale) t.end_fill() t.color((255,155,192), "white") t.penup() t.seth(90) t.fd(-25*scale) t.seth(0) t.fd(40*scale) t.pendown() t.begin_fill() t.circle(15*scale) t.end_fill() t.color("black") t.penup() t.seth(90) t.fd(12*scale) t.seth(0) t.fd(-3*scale) t.pendown() t.begin_fill() t.circle(3*scale) t.end_fill() # 腮 t.color((255,155,192)) t.penup() t.seth(90) t.fd(-95*scale) t.seth(0) t.fd(65*scale) t.pendown() t.begin_fill() t.circle(30*scale) t.end_fill() # 嘴 t.color(239,69,19) t.penup() t.seth(90) t.fd(15*scale) t.seth(0) t.fd(-100*scale) t.pendown() t.seth(-80) t.circle(30*scale, 40) t.circle(40*scale, 80) # 身体 t.color("red", (255,99,71)) t.penup() t.seth(90) t.fd(-20*scale) t.seth(0) t.fd(-78*scale) t.pendown() t.begin_fill() t.seth(-130) t.circle(100*scale, 10) t.circle(300*scale, 30) t.seth(0) t.fd(230*scale) t.seth(90) t.circle(300*scale, 30) t.circle(100*scale, 3) t.color((255,155,192), (255,100,100)) t.seth(-135) t.circle(-80*scale, 63) t.circle(-150*scale, 24) t.end_fill() # 手 t.color((255,155,192)) t.penup() t.seth(90) t.fd(-40*scale) t.seth(0) t.fd(-27*scale) t.pendown() t.seth(-160) t.circle(300*scale, 15) t.penup() t.seth(90) t.fd(15*scale) t.seth(0) t.fd(0) t.pendown() t.seth(-10) t.circle(-20*scale, 90) t.penup() t.seth(90) t.fd(30*scale) t.seth(0) t.fd(237*scale) t.pendown() t.seth(-20) t.circle(-300*scale, 15) t.penup() t.seth(90) t.fd(20*scale) t.seth(0) t.fd(0) t.pendown() t.seth(-170) t.circle(20*scale, 90) # 脚 t.pensize(10*scale) t.color((240,128,128)) t.penup() t.seth(90) t.fd(-75*scale) t.seth(0) t.fd(-180*scale) t.pendown() t.seth(-90) t.fd(40*scale) t.seth(-180) t.color("black") t.pensize(15*scale) t.fd(20*scale) t.pensize(10*scale) t.color((240,128,128)) t.penup() t.seth(90) t.fd(40*scale) t.seth(0) t.fd(90*scale) t.pendown() t.seth(-90) t.fd(40*scale) t.seth(-180) t.color("black") t.pensize(15*scale) t.fd(20*scale) # 尾巴 t.pensize(4*scale) t.color((255,155,192)) t.penup() t.seth(90) t.fd(70*scale) t.seth(0) t.fd(95*scale) t.pendown() t.seth(0) t.circle(70*scale, 20) t.circle(10*scale, 330) t.circle(70*scale, 30) def draw_tree(x, y, size=1.0): """绘制递归小树的函数,支持平移和缩放""" # 保存当前状态 current_pos = t.position() current_heading = t.heading() current_color = t.color() current_pensize = t.pensize() t.penup() t.goto(x, y) t.pendown() t.pensize(3 * size) # 设置树的初始方向(向上) t.setheading(90) # 递归绘制树的函数(参考引用[3]和[4]) def draw_branch(branch_length): if branch_length > 5 * size: # 根据树枝长度设置颜色 if branch_length < 40 * size: t.color('darkgreen') else: t.color('brown') t.forward(branch_length) # 右侧树枝 t.right(25) draw_branch(branch_length - 15 * size) # 左侧树枝 t.left(50) draw_branch(branch_length - 15 * size) # 返回 t.right(25) t.backward(branch_length) # 开始绘制树 draw_branch(80 * size) # 恢复之前的状态 t.penup() t.goto(current_pos) t.setheading(current_heading) t.color(*current_color) t.pensize(current_pensize) # 主程序 def main(): t.screensize(400, 300) t.colormode(255) t.setup(840, 500) t.speed(0) # 最快速度绘制 # 绘制第一个小猪佩奇(原始大小) draw_peppa(-200, 0, 1.0) # 绘制第二个小猪佩奇(缩小版,向右平移) draw_peppa(150, -50, 0.6) # 绘制小树(左侧) draw_tree(-350, -200, 0.8) # 绘制第二棵小树(右侧) draw_tree(300, -200, 1.2) t.hideturtle() t.done() if __name__ == "__main__": main() 改进树的结构使更加美观,在图片上添加上我的姓名田哲栋
最新发布
12-23
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值