python画爱心代码大全(python画图代码)
程序员文章站
2024-03-27 17:05:58
turtle画一个彩色螺旋图形import turtleturtle.shape('turtle')turtle.speed(9) # 画笔速度turtle.pensize(2)...
turtle画一个彩色螺旋图形
import turtle
turtle.shape('turtle')
turtle.speed(9) # 画笔速度
turtle.pensize(2) # 画笔的宽度
turtle.bgcolor("black") # 画布背景色
colors = ["red","yellow","green","blue"] # 定义画笔线色
for i in range(255): # 循环一次 画一条线
turtle.forward(2 * i) # 向当前方向前进n像素
turtle.color(colors[i % 4]) # 根据求余 调整画笔线色
turtle.left(91) # 向左旋转91度
turtle.done()
仙人球
import turtle
turtle.shape('turtle')
turtle.color('orange', 'green')
turtle.begin_fill()
while true:
turtle.forward(200)
turtle.left(170)
if abs(turtle.pos()) < 1:
break
turtle.end_fill()
turtle.done()
国旗
import turtle
turtle.shape('turtle')
turtle.screensize(2000, 2000, 'white') # 设置画布大小
turtle.speed(9)
# 绘制旗面
turtle.pencolor('red')
# pu()
turtle.goto(-300, -200)
turtle.pd()
turtle.fillcolor('red')
turtle.begin_fill()
for i in range(0, 2):
turtle.fd(600)
turtle.lt(90)
turtle.fd(400)
turtle.lt(90)
turtle.end_fill()
# 绘制大五角星
turtle.pu()
turtle.pencolor('yellow')
turtle.goto(-260, 120)
turtle.pd()
turtle.fillcolor('yellow')
turtle.begin_fill()
for i in range(0, 5):
turtle.fd(113.137) # 大星一划的边长
turtle.rt(144)
turtle.end_fill()
# 绘制四个小五角星
list1 = [(-100, 160), (-60, 120), (-60, 60), (-100, 20)] # 四个五角星的中心坐标
list2 = [31.98, 8.13, -15.59, -38.66] # 相对角度0的后退1.111需要左转的角度
for j in range(0, 4):
turtle.seth(0) # 这是龟头角度为0
turtle.pu()
turtle.goto(list1[j]) # 定位到五角星中心
turtle.lt(list2[j]) # 旋转角度,以背向指向大五角星的角尖
turtle.bk(20) # 从五角星中心到指向大五角星的角尖(龟倒着爬)退一个小圆半径
turtle.lt(18) # 五角星的半角角度
turtle.pd()
turtle.begin_fill()
for i in range(0, 5):
turtle.fd(113.137 / 3) # 小星一划的边长
turtle.rt(144)
turtle.end_fill()
turtle.pu()
turtle.ht()
turtle.done()
玫瑰花
import turtle
import time
turtle.shape('turtle')
turtle.speed(5)
# 设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)
# 花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10,180)
turtle.circle(25,110)
turtle.left(50)
turtle.circle(60,45)
turtle.circle(20,170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30,110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90,70)
turtle.circle(30,150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80,90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150,80)
turtle.left(50)
turtle.circle(150,90)
turtle.end_fill()
# 花瓣1
turtle.left(150)
turtle.circle(-90,70)
turtle.left(20)
turtle.circle(75,105)
turtle.setheading(60)
turtle.circle(80,98)
turtle.circle(-90,40)
# 花瓣2
turtle.left(180)
turtle.circle(90,40)
turtle.circle(-80,98)
turtle.setheading(-83)
# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80,90)
turtle.right(90)
turtle.circle(-80,90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)
# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80,90)
turtle.left(90)
turtle.circle(80,90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200,60)
turtle.done()
彩色树
import turtle
turtle.shape('turtle')
# 设置色彩模式是rgb:
turtle.colormode(255)
turtle.lt(90)
lv = 14
l = 120
s = 45
turtle.width(lv)
# 初始化rgb颜色:
r = 0
g = 0
b = 0
turtle.pencolor(r, g, b)
turtle.penup()
turtle.bk(l)
turtle.pendown()
turtle.fd(l)
def draw_tree(l, level):
global r, g, b
# save the current pen width
w = turtle.width()
# narrow the pen width
turtle.width(w * 3.0 / 4.0)
# set color:
r = r + 1
g = g + 2
b = b + 3
turtle.pencolor(r % 200, g % 200, b % 200)
l = 3.0 / 4.0 * l
turtle.lt(s)
turtle.fd(l)
if level < lv:
draw_tree(l, level + 1)
turtle.bk(l)
turtle.rt(2 * s)
turtle.fd(l)
if level < lv:
draw_tree(l, level + 1)
turtle.bk(l)
turtle.lt(s)
# restore the previous pen width
turtle.width(w)
turtle.speed("fastest")
draw_tree(l, 4)
turtle.done()
随机樱花树
# 每次运行 树的形状是随机的
import turtle as t
import random
import time
# 画樱花的躯干(60,t)
def tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 8 <= branch <= 12:
if random.randint(0, 2) == 0:
t.color('snow') # 白
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 3)
elif branch < 8:
if random.randint(0, 1) == 0:
t.color('snow')
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 2)
else:
t.color('sienna') # 赭(zhě)色
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
tree(branch - 10 * b, t)
t.left(40 * a)
tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
# 掉落的花瓣
def petal(m, t):
for i in range(m):
a = 200 - 400 * random.random()
b = 10 - 20 * random.random()
t.up()
t.forward(b)
t.left(90)
t.forward(a)
t.down()
t.color('lightcoral') # 淡珊瑚色
t.circle(1)
t.up()
t.backward(a)
t.right(90)
t.backward(b)
# 绘图区域
t = t.turtle()
# 画布大小
w = t.screen()
t.shape('turtle')
# t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
# 画樱花的躯干
tree(60, t)
# 掉落的花瓣
petal(200, t)
w.exitonclick()
t.done()
爱情树
import random
import turtle
def love(x, y): # 在(x,y)处画爱心lalala
lv = turtle.turtle()
lv.hideturtle()
lv.up()
lv.goto(x, y) # 定位到(x,y)
def curvemove(): # 画圆弧
for i in range(20):
lv.right(10)
lv.forward(2)
lv.color('red', 'pink')
lv.speed(0)
lv.pensize(1)
# 开始画爱心lalala
lv.down()
lv.begin_fill()
lv.left(140)
lv.forward(22)
curvemove()
lv.left(120)
curvemove()
lv.forward(22)
lv.write("{}".format("i love you!"), font=("arial", 10, "normal"), align="center")
lv.left(140) # 画完复位
lv.end_fill()
def tree(branchlen, t):
if branchlen > 5: # 剩余树枝太少要结束递归
if branchlen < 20: # 如果树枝剩余长度较短则变绿
t.color("green")
t.pensize(random.uniform((branchlen + 5) / 4 - 2, (branchlen + 6) / 4 + 5))
t.down()
t.forward(branchlen)
love(t.xcor(), t.ycor()) # 传输现在turtle的坐标
t.up()
t.backward(branchlen)
t.color("brown")
return
t.pensize(random.uniform((branchlen + 5) / 4 - 2, (branchlen + 6) / 4 + 5))
t.down()
t.forward(branchlen)
# 以下递归
ang = random.uniform(15, 45)
t.right(ang)
tree(branchlen - random.uniform(12, 16), t) # 随机决定减小长度
t.left(2 * ang)
tree(branchlen - random.uniform(12, 16), t) # 随机决定减小长度
t.right(ang)
t.up()
t.backward(branchlen)
def fonts():
t.penup()
t.goto(-300, -300)
t.pencolor('red')
t.write("我爱你!^_^", font=('方正行黑简体', 30, 'normal'))
mywin = turtle.screen()
t = turtle.turtle()
t.hideturtle()
t.speed(0)
t.left(90)
t.up()
t.backward(200)
t.down()
t.color("brown")
t.pensize(32)
t.forward(60)
tree(100, t)
fonts()
mywin.exitonclick()
哆啦a梦
import turtle
def flyto(x, y):
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
def draweye():
turtle.tracer(false)
a = 2.5
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
a -= 0.05
else:
a += 0.05
turtle.left(3)
turtle.fd(a)
turtle.tracer(true)
def beard():
""" 画胡子, 一共六根
"""
# 左边第一根胡子
flyto(-37, 135)
turtle.seth(165)
turtle.fd(60)
# 左边第二根胡子
flyto(-37, 125)
turtle.seth(180)
turtle.fd(60)
# 左边第三根胡子
flyto(-37, 115)
turtle.seth(193)
turtle.fd(60)
# 右边第一根胡子
flyto(37, 135)
turtle.seth(15)
turtle.fd(60)
# 右边第二根胡子
flyto(37, 125)
turtle.seth(0)
turtle.fd(60)
# 右边第三根胡子
flyto(37, 115)
turtle.seth(-13)
turtle.fd(60)
def drawredscarf():
""" 画围巾
"""
turtle.fillcolor("red") # 填充颜色
turtle.begin_fill()
turtle.seth(0) # 朝向右
turtle.fd(200) # 前进10个单位
turtle.circle(-5, 90)
turtle.fd(10)
turtle.circle(-5, 90)
turtle.fd(207)
turtle.circle(-5, 90)
turtle.fd(10)
turtle.circle(-5, 90)
turtle.end_fill()
def drawmouse():
flyto(5, 148)
turtle.seth(270)
turtle.fd(100)
turtle.seth(0)
turtle.circle(120, 50)
turtle.seth(230)
turtle.circle(-120, 100)
def drawrednose():
flyto(-10, 158)
turtle.fillcolor("red") # 填充颜色
turtle.begin_fill()
turtle.circle(20)
turtle.end_fill()
def drawblackdraweye():
turtle.seth(0)
flyto(-20, 195)
turtle.fillcolor("#000000") # 填充颜色
turtle.begin_fill()
turtle.circle(13)
turtle.end_fill()
turtle.pensize(6)
flyto(20, 205)
turtle.seth(75)
turtle.circle(-10, 150)
turtle.pensize(3)
flyto(-17, 200)
turtle.seth(0)
turtle.fillcolor("#ffffff")
turtle.begin_fill()
turtle.circle(5)
turtle.end_fill()
flyto(0, 0)
def drawface():
turtle.forward(183) # 前行183个单位
turtle.fillcolor("white") # 填充颜色为白色
turtle.begin_fill() # 开始填充
turtle.left(45) # 左转45度
turtle.circle(120, 100) # 右边那半边脸
turtle.seth(90) # 朝向向上
draweye() # 画右眼睛
turtle.seth(180) # 朝向左
turtle.penup() # 抬笔
turtle.fd(60) # 前行60
turtle.pendown() # 落笔
turtle.seth(90) # 朝向上
draweye() # 画左眼睛
turtle.penup() # 抬笔
turtle.seth(180) # 朝向左
turtle.fd(64) # 前进64
turtle.pendown() # 落笔
turtle.seth(215) # 修改朝向
turtle.circle(120, 100) # 左边那半边脸
turtle.end_fill() #
def drawhead():
""" 画了一个被切掉下半部分的圆
"""
turtle.penup() # 抬笔
turtle.circle(150, 40) # 画圆, 半径150,圆周角40
turtle.pendown() # 落笔
turtle.fillcolor("#00a0de") # 填充色
turtle.begin_fill() # 开始填充
turtle.circle(150, 280) # 画圆,半径150, 圆周角280
turtle.end_fill()
def drawall():
drawhead()
drawredscarf()
drawface()
drawrednose()
drawmouse()
beard()
flyto(0, 0)
turtle.seth(0)
turtle.penup()
turtle.circle(150, 50)
turtle.pendown()
turtle.seth(30)
turtle.fd(40)
turtle.seth(70)
turtle.circle(-30, 270)
turtle.fillcolor("#00a0de")
turtle.begin_fill()
turtle.seth(230)
turtle.fd(80)
turtle.seth(90)
turtle.circle(1000, 1)
turtle.seth(-89)
turtle.circle(-1000, 10)
turtle.seth(180)
turtle.fd(70)
turtle.seth(90)
turtle.circle(30, 180)
turtle.seth(180)
turtle.fd(70)
turtle.seth(100)
turtle.circle(-1000, 9)
turtle.seth(-86)
turtle.circle(1000, 2)
turtle.seth(230)
turtle.fd(40)
turtle.circle(-30, 230)
turtle.seth(45)
turtle.fd(81)
turtle.seth(0)
turtle.fd(203)
turtle.circle(5, 90)
turtle.fd(10)
turtle.circle(5, 90)
turtle.fd(7)
turtle.seth(40)
turtle.circle(150, 10)
turtle.seth(30)
turtle.fd(40)
turtle.end_fill()
# 左手
turtle.seth(70)
turtle.fillcolor("#ffffff")
turtle.begin_fill()
turtle.circle(-30)
turtle.end_fill()
# 脚
flyto(103.74, -182.59)
turtle.seth(0)
turtle.fillcolor("#ffffff")
turtle.begin_fill()
turtle.fd(15)
turtle.circle(-15, 180)
turtle.fd(90)
turtle.circle(-15, 180)
turtle.fd(10)
turtle.end_fill()
flyto(-96.26, -182.59)
turtle.seth(180)
turtle.fillcolor("#ffffff")
turtle.begin_fill()
turtle.fd(15)
turtle.circle(15, 180)
turtle.fd(90)
turtle.circle(15, 180)
turtle.fd(10)
turtle.end_fill()
# 右手
flyto(-133.97, -91.81)
turtle.seth(50)
turtle.fillcolor("#ffffff")
turtle.begin_fill()
turtle.circle(30)
turtle.end_fill()
# 口袋
flyto(-103.42, 15.09)
turtle.seth(0)
turtle.fd(38)
turtle.seth(230)
turtle.begin_fill()
turtle.circle(90, 260)
turtle.end_fill()
flyto(5, -40)
turtle.seth(0)
turtle.fd(70)
turtle.seth(-90)
turtle.circle(-70, 180)
turtle.seth(0)
turtle.fd(70)
# 铃铛
flyto(-103.42, 15.09)
turtle.fd(90)
turtle.seth(70)
turtle.fillcolor("#ffd200")
turtle.begin_fill()
turtle.circle(-20)
turtle.end_fill()
turtle.seth(170)
turtle.fillcolor("#ffd200")
turtle.begin_fill()
turtle.circle(-2, 180)
turtle.seth(10)
turtle.circle(-100, 22)
turtle.circle(-2, 180)
turtle.seth(180 - 10)
turtle.circle(100, 22)
turtle.end_fill()
flyto(-13.42, 15.09)
turtle.seth(250)
turtle.circle(20, 110)
turtle.seth(90)
turtle.fd(15)
turtle.dot(10)
flyto(0, -150)
drawblackdraweye()
def main():
turtle.screensize(800, 6000, "#f0f0f0")
turtle.pensize(3)
turtle.speed(9)
drawall()
if __name__ == "__main__":
main()
turtle.mainloop()
时钟
import turtle
from datetime import *
# 抬起画笔,向前运动一段距离放下
def skip(step):
turtle.penup()
turtle.forward(step)
turtle.pendown()
def mkhand(name, length):
# 注册turtle形状,建立表针turtle
turtle.reset()
skip(-length * 0.1)
# 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.begin_poly()
turtle.forward(length * 1.1)
# 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
turtle.end_poly()
# 返回最后记录的多边形。
handform = turtle.get_poly()
turtle.register_shape(name, handform)
def init():
global sechand, minhand, hurhand, printer
# 重置turtle指向北
turtle.mode("logo")
# 建立三个表针turtle并初始化
mkhand("sechand", 135)
mkhand("minhand", 125)
mkhand("hurhand", 90)
sechand = turtle.turtle()
sechand.shape("sechand")
minhand = turtle.turtle()
minhand.shape("minhand")
hurhand = turtle.turtle()
hurhand.shape("hurhand")
for hand in sechand, minhand, hurhand:
hand.shapesize(1, 1, 3)
hand.pencolor('orange')
hand.speed(0)
# 建立输出文字turtle
printer = turtle.turtle()
printer.pencolor('red')
# 隐藏画笔的turtle形状
printer.hideturtle()
printer.penup()
def setupclock(radius):
# 建立表的外框
turtle.reset()
turtle.pencolor('blue')
turtle.pensize(7)
for i in range(60):
skip(radius)
if i % 5 == 0:
turtle.forward(20)
skip(-radius - 20)
skip(radius + 20)
if i == 0:
turtle.write(int(12), align="center", font=("courier", 14, "bold"))
elif i == 30:
skip(25)
turtle.write(int(i / 5), align="center", font=("courier", 14, "bold"))
skip(-25)
elif (i == 25 or i == 35):
skip(20)
turtle.write(int(i / 5), align="center", font=("courier", 14, "bold"))
skip(-20)
else:
turtle.write(int(i / 5), align="center", font=("courier", 14, "bold"))
skip(-radius - 20)
else:
turtle.dot(5)
skip(-radius)
turtle.right(6)
def week(t):
week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
return week[t.weekday()]
def date(t):
y = t.year
m = t.month
d = t.day
return "%s-%d-%d" % (y, m, d)
def tick():
# 绘制表针的动态显示
t = datetime.today()
second = t.second + t.microsecond * 0.000001
minute = t.minute + second / 60.0
hour = t.hour + minute / 60.0
sechand.setheading(6 * second)
minhand.setheading(6 * minute)
hurhand.setheading(30 * hour)
turtle.tracer(false)
printer.forward(65)
printer.write(week(t), align="center", font=("courier", 14, "bold"))
printer.back(130)
printer.write(date(t), align="center", font=("courier", 14, "bold"))
printer.home()
turtle.tracer(true)
# 100ms后继续调用tick
turtle.ontimer(tick, 100)
def main():
# 打开/关闭龟动画,并为更新图纸设置延迟。
turtle.tracer(false)
init()
setupclock(160)
turtle.tracer(true)
tick()
turtle.done()
if __name__ == "__main__":
main()