资讯专栏INFORMATION COLUMN

Python画图练习案例解答

89542767 / 396人阅读

python的应用还是比较的广泛的,甚至可以去绘画,但是,要是想去绘画的话,还是需要一定的时间,然后去进行训练绘画的。下面就以一个案例的形式,来教给大家,怎么用Python去画图,大家要仔细的进行阅读哦。

 

  1.多边形的绘制案例

 

  #多边形的绘制案例
  import turtle
  def main():
  turtle.color("green")
  #steps代表多边形的绘制
  turtle.circle(50,steps=6)
  turtle.exitonclick()
  if __name__=="__main__":
  main()

01.png

  2.太阳花案例

 

 #太阳花案例*******************************************************************
  import turtle
  import time
  turtle.color("red","yellow")
  turtle.begin_fill()
  for _ in range(50):
  turtle.speed(0)
  turtle.forward(200)
  turtle.left(170)
  turtle.end_fill()
  turtle.mainloop()

02.png 

  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"))
  turtle.mainloop()

03.png

  4.艺术图片

 

  #艺术图片*************************************************************************
  import turtle
  turtle.speed(0)
  turtle.delay(0)
  turtle.pensize(2)
  turtle.bgcolor("black")
  colors=["red","blue","yellow","purple"]
  for x in range(300):
  turtle.color(colors[x%4])
  turtle.forward(2*x)
  turtle.left(91)
  turtle.done()

04.png

  5.黑六边形

 

  ##黑六边形*****************************************************************************
  import turtle
  def bye(x,y):
  turtle.bye()
  s=turtle.Screen()
  s.bgcolor("black")
  s.screensize(800,800)
  s.title("Class Using")
  s.onscreenclick(bye)
  p=turtle.Turtle()
  p.speed(0)
  p.hideturtle()
  p.pencolor("red")
  p.pensize(3)
  p.circle(50,360,6)
  turtle.done()

05.png

  6.绘制时钟

 

  #绘制时钟************************************************************************************************
  import turtle as tt
  from datetime import*
  #当前日期属于一周的第几天
  def Week(t):
  week=["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
  return week[t.weekday()]
  #获取当前时间
  def Date(t):
  y=t.year
  m=t.month
  d=t.day
  cur_hour=t.hour;
  cur_min=t.minute;
  cur_sec=t.second;
  return"%s-%d-%d%d:%02d:%02d"%(y,m,d,cur_hour,cur_min,cur_sec)
  #移动画笔,距离为distance
  def movePen(distance):
  tt.penup()
  tt.pensize(5)
  tt.pencolor("blue")
  tt.fd(distance)
  tt.pendown()
  #绘制表针
  def makeHands(name,length):
  #清空窗口,重置turtule状态为初始状态
  tt.reset()
  movePen(-length*0.1)
  #开始记录多边形的顶点
  tt.begin_poly()
  tt.fd(length*1.1)
  #停止记录多边形的顶点
  tt.end_poly()
  #返回记录的多边形
  handForm=tt.get_poly()
  tt.register_shape(name,handForm)
  #初始化
  def initial():
  global secHand,minHand,hurHand,printer
  #重置方向向北(上),正角度为顺时针
  tt.mode("logo")
  #建立并初始化表针
  makeHands("secHand",180)
  makeHands("minHand",150)
  makeHands("hurHand",110)
  secHand=tt.Turtle()
  secHand.shape("secHand")
  minHand=tt.Turtle()
  minHand.shape("minHand")
  hurHand=tt.Turtle()
  hurHand.shape("hurHand")
  for hand in secHand,minHand,hurHand:
  hand.shapesize(1,1,4)
  hand.speed(0)
  #输出文字
  printer=tt.Turtle()
  #隐藏画笔
  printer.hideturtle()
  printer.penup()
  #绘制表盘外框
  def drawClock(R):
  #清空窗口,重置turtule状态为初始状态
  tt.reset()
  #画笔尺寸
  tt.pensize(5)
  for i in range(60):
  movePen(R)
  if i%5==0:
  tt.fd(20)
  movePen(-R-20)
  movePen(R+20)
  if i==0:
  #写文本
  tt.write(int(12),align="center",font=("Consolas",14,"bold"))
  elif i==30:
  movePen(25)
  tt.write(int(i/5),align="center",font=("Consolas",14,"bold"))
  movePen(-25)
  elif(i==25 or i==35):
  movePen(20)
  tt.write(int(i/5),align="center",font=("Consolas",14,"bold"))
  movePen(-20)
  else:
  tt.write(int(i/5),align="center",font=("Consolas",14,"bold"))
  movePen(-R-20)
  else:
  #绘制指定半径和颜色的点
  tt.dot(5,"red")
  movePen(-R)
  tt.right(6)
  #表针的动态显示
  def handsMove():
  t=datetime.today()
  second=t.second+t.microsecond*0.000001
  minute=t.minute+second/60.0
  hour=t.hour+minute/60.0
  secHand.seth(6*second)
  minHand.seth(6*minute)
  hurHand.seth(30*hour)
  tt.tracer(False)
  printer.fd(65)
  tt.pencolor("green")
  printer.write(Week(t),align="center",font=("黑体",14))
  printer.back(130)
  printer.write(Date(t),align="center",font=("Consolas",14))
  #设置当前画笔位置为原点,方向朝东
  printer.home()
  tt.tracer(True)
  #经过100ms后继续调用handsMove函数
  tt.ontimer(handsMove,100)
  #调用定义的函数,打开和关闭动画,为更新图纸设置延迟;
  tt.tracer(False)
  initial()
  drawClock(200)
  tt.tracer(True)
  handsMove()
  tt.mainloop()

06.png

  7.绘制分形树

 

  #绘制分形树******************************************************************************
  import turtle
  def draw_branch(branch_length):
  '''
  绘制分形树
  '''
  if branch_length>5:
  #绘制右侧树枝
  turtle.forward(branch_length)
  print("向前:",branch_length)
  turtle.right(20)
  print("右转:20度")
  draw_branch(branch_length-15)
  #绘制左侧树枝
  turtle.left(40)
  print("左转:40度")
  

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128300.html

相关文章

  • Java编程基础02——Java语言基础

    摘要:所以就想把一大串缩短点,将二进制中的三位用一位表示。以可以大写也可以小写开头版本可以表示二进制了八进制的数据表现形式由组成。结果把系数基数的权次幂相加即可。因为语言采用的是码来编码的。 1_(常量的概述和使用)* A:什么是常量(constant) 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的...

    pakolagij 评论0 收藏0
  • 怎么用Python matplotlib库解决画图中出现中文和显示显示成方框的的问题

      小编写这篇文章的一个最为主要的目的,就是去给大家去做一个解释,解释关于在python中的一些问题,甚至是出现的各种相关的疑难杂症问题,比如出现了中文负数的问题,下面小编就给大家详细的去做一个解答。  解决Python中matplotlib库画图中文和负号显示为方框的问题  注意:  语言版本:Python 3.10.4  编译器版本:PyCharm 2021.3.2  操作系统:Win11  ...

    89542767 评论0 收藏0
  • Java编程基础18——集合(Set集合)

    摘要:并把最终的随机数输出到控制台。方法,在集合中如何存储元素取决于方法的返回值返回,集合中只有一个元素。创建集合对象,传入比较器。 1_HashSet存储字符串并遍历 A:Set集合概述及特点 通过API查看即可 B:案例演示 HashSet存储字符串并遍历 import java.util.HashSet; public class Demo1_HashSet { p...

    SexySix 评论0 收藏0
  • 爬虫基础练习python爬虫下载豆瓣妹子图片

    摘要:下载指定网站上的妹子图片,这里只抓了前页的图片,可根据需要自己设置页数值为图片类型,大家可以自行更改值体验一下,有问题留言给我,看到就会解答大胸妹美腿控有颜值大杂烩小翘臀链接已处理完毕图片下载完成 下载指定网站上的妹子图片,这里只抓了前100页的图片,可根据需要自己设置页数cat值为图片类型,大家可以自行更改cat值体验一下,有问题留言给我,看到就会解答2 = 大胸妹3 = 美腿控4 ...

    klinson 评论0 收藏0
  • Java编程基础06——数组

    摘要:空指针异常原因数组已经不在指向堆内存了。当访问数组不存在的索引时,就会出现数组索引越界异常数组的操作遍历掌握案例演示数组遍历就是依次输出数组中的每一个元素。内循环控制的是一维数组的长度。 1.数组概述和定义格式说明 A:为什么要有数组(容器): 为了存储同种数据类型的多个值 B:数组概念: 数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器;数组既可以存储基本数据类型,也可...

    荆兆峰 评论0 收藏0
  • 给伸手党的福利:Python 新手入门引导

    摘要:如果你仍然无法抉择,那请选择,毕竟这是未来的趋势,参考知乎回答还是编辑器该如何选我推荐社区版,配置简单功能强大使用起来省时省心,对初学者友好。 这是一篇 Python 入门指南,针对那些没有任何编程经验,从零开始学习 Python 的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。 在这个信息爆炸的时代,以 Python入门 为关键字搜索出...

    用户84 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<