首页 > 编程语言 >实验6 turtle绘图与python库应用编程体验

实验6 turtle绘图与python库应用编程体验

时间:2023-06-06 21:25:41浏览次数:51  
标签:turtle moveto python range radius 绘图 def left

实验任务1

task1_1

from turtle import *

def moveto(x,y):
    '''
    画笔移动到坐标(x,y)处
    '''
    penup()
    goto(x,y)
    pendown()

def draw(n,size = 100):
    '''
    绘制边长为size的正n边形
    '''
    for i in range(n):
        fd(size)
        left(360/n)

def main():
    pensize(2)
    pencolor('red')

    moveto(-200,0)
    draw(3)

    moveto(0,0)
    draw(4)

    moveto(200,0)
    draw(5)

    hideturtle()
    done()

main()

运行结果如图:

  task1_2

# 运用circle函数,实现正多边形绘制
from turtle import *

def moveto(x,y):
    '''
    画笔移动到坐标(x,y)处
    '''
    penup()
    goto(x,y)
    pendown()

def main():
    pensize(2)
    pencolor('blue')

    moveto(-150,0)
    circle(50)

    moveto(0,0)
    circle(50,steps = 4)

    moveto(150,0)
    circle(50,steps = 5)

    moveto(300,0)
    circle(50,steps = 6)

    hideturtle()
    done()

main()

运行结果如图:

 

试验任务2

task2_1

# 用turtle绘制9个同心圆
from turtle import *

def moveto(x,y):
    penup()
    goto(x,y)
    pendown()

def main():
    setup(800,600)

    radius = 20 # 圆初始半径
    offset = 20 # 同心圆每次位移量

    for i in range(9):
        moveto(0,-radius)
        circle(radius)
        radius += offset

    hideturtle()
    done()

main()

运行截图如图:

 task2_2_1

# 以(0, 0)为圆心,绘制9个彩色同心圆,色彩随机生成
from turtle import *
from random import random

def moveto(x, y):
    penup()
    goto(x, y)
    pendown()
    
def gen_color():
    '''
    生成一个以rgb三元组表示的颜色值并返回
    '''
    return tuple((random() for i in range(3)))

def main():
    setup(800, 600)
    radius = 180 # 圆初始半径
    offset = 20 # 同心圆每次位移量
    for i in range(8):
        moveto(0, -radius)
        color(gen_color())
        begin_fill()
        circle(radius)
        end_fill()

        radius -= offset

    hideturtle()
    done()

main()

运行截图如图:

 

颜色会随机变化

若半径从小到大:

task2_2_2

# 以(0, 0)为圆心,绘制9个彩色同心圆,色彩随机生成
from turtle import *
from random import random

def moveto(x, y):
    penup()
    goto(x, y)
    pendown()
    
def gen_color():
    '''
    生成一个以rgb三元组表示的颜色值并返回
    '''
    return tuple((random() for i in range(3)))

def main():
    setup(800, 600)
    radius = 20 # 圆初始半径
    offset = 20 # 同心圆每次位移量
    for i in range(8):
        moveto(0, -radius)
        color(gen_color())
        begin_fill()
        circle(radius)
        end_fill()

        radius += offset

    hideturtle()
    done()

main()

运行结果如图:

 

 

半径大的圆会填充覆盖半径小的圆

 

实验任务3

task3_1

# 用矩形绘制花瓣
from turtle import *

def square(size = 50, rgb = 'pink'):
    '''
    绘制正方形
    :para: size:int 指定边长 (如未指定参数,使用默认值)
    :para: c: str 指定画笔颜色值 (如未指定参数,使用默认值)
    '''
    pencolor(rgb)
    for i in range(4):
        fd(size)
        left(90)

def main():
    setup(800, 600)
    speed(0)

    n = 3
    for i in range(n):
        square(80)
        left(360/n)

    hideturtle()
    done()

main()

n=3

 

n=4

 

n=5

 

n=6

task3_2

 

from turtle import *

setup(800, 600)
pencolor('pink')

n = 10
for i in range(n):
    # 绘制一片花瓣
    for j in range(2):
        circle(80, 90)
        left(90)

    right(360/n)

hideturtle()
done()

运行结果如图:

 

实验任务4

task4

from turtle import *

setup(800, 600)
bgcolor('black')
pencolor('white')
speed(0)

angle = 0
size = 2

n = 5 # 螺旋n边形
count = 50 # 循环次数
for i in range(count):
    fd(size)
    angle += 360/n
    seth(angle)
    size += 5

hideturtle()
done()

实验结果如图:

 

实验任务5

task5_1

# 先画外围正方形
from turtle import *

def moveto(x, y):
    penup()
    goto(x, y)
    pendown()

color('black')
begin_fill()
moveto(-100,-100)
for i in range(4):
    fd(200)
    left(90)
end_fill()

# 再画内三角形
color('red')

begin_fill()
moveto(0,-100)
left(45)
for i in range(4):
    fd(100*2**(1/2))
    left(90)
end_fill()
hideturtle()
done()

运行结果如图:

 task5_2

size = 5
color('blue')

radius = 40
for i in range(5): # 扇形的个数
    fd(radius)
    left(90)
    circle(radius,90)
    left(90)
    fd(radius)
    left(90)
    radius += 20

hideturtle()
done()

运行结果如图:

 实验任务6

from turtle import *
screensize(100,100,'black')

def moveto(x, y):
    penup()
    goto(x, y)
    pendown()

# 画脸
color('yellow')
begin_fill()
left(45)
fd(100)
left(90)
circle(100,270)
left(90)
fd(100)
end_fill()

# 画眼睛
moveto(10,65)
dot(15,'black')

# 画高光
moveto(8,70)
dot(8,'white')

hideturtle()
done()

运行结果如图:

 实验结论:

较为简单的画图,仔细观察便可

 

标签:turtle,moveto,python,range,radius,绘图,def,left
From: https://www.cnblogs.com/fengguowanyueyi/p/17461737.html

相关文章

  • python笔记
    python官方文档6.6的代码:frommaiximportcamera,mjpg,displayimportsocket#host_name='192.168.4.1'shuzu=bytearray(57600)#bytes是不能被修改的#s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#地址簇:AF_INET(IPv4)类型:SOCK_STREAM(使用TCP传输控......
  • python opencv GaussianBlur
    pythonopencvGaussianBlur importcv2#Loadtheimageimg=cv2.imread('20230222100736979.jpg')#ApplyaGaussianblurwithakernelsizeof5x5blur=cv2.GaussianBlur(img,(5,5),0)#Displaytheoriginalandblurredimagessidebysi......
  • Python正则表达式学习(5)——re.findall()
    re.findall(pattern,string,flags=0)返回字符串中模式的所有非重叠匹配,作为字符串列表。字符串从左到右扫描,并按照找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组的列表;如果模式有多个组,这将是一个元组的列表。结果中包含空匹配,除非他们触及另一个匹配的开始。In[1......
  • Python正则表达式学习(4)——re.match() 和 re.search()
    Python提供了基于正则表达式的两种不同的原始操作:re.match()仅在字符串的开头检查匹配,只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。re.search()检查字符串中任何位置的匹配例如:In[2]:re.match("c","absdbdfskdvc")In[3]:re.search("c","a......
  • 基于《PythonCookbook》的学习(3)——利用 Shell 通配符做字符串匹配
    fnmatch模块提供了fnmatch()和fnmatchcase()两个函数可以使用通配符模式对文本进行匹配fnmatch所完成的匹配操作有点介乎于加单的字符串方法和全功能的正则表达式之间。感觉蛮鸡肋的…:(......
  • Python正则表达式学习(3)——re.compile()
    re.compile(pattern,flags=0)将正则表达式pattern编译为正则表达式对象,可用于使用其match()和search()方法进行匹配。顺序:prog=re.compile(pattern)result=prog.match(string)等价于:result=re.match(pattern,string)但是当单个程序中的表达式被多次使用时,使用re.comp......
  • 基于《PythonCookbook》的学习(1)——针对任意多的分隔符拆分字符串
    问题:需要将字符串拆分为不同的字段,但是分隔符(以及分隔符之间的空格)在整个字符串中并不一致re.split()方法比str.split()方法更为灵活,可以为分隔符指定多个模式re.split()方法返回一个list目标字符串:In[15]:lineOut[15]:'asdasdsadas,,,,sdfdsfi///ds...ds/essd//s......
  • HttpURLConnection调用webservice,c#、java、python等HTTP调用webservice,简单的webserv
    以前调用webservice一般使用axis、axis2先生成java类后,直接引用,多方便。但是有的webservice接口非常的函数,生成的java类非常多,有没有一种非常简化的方法。axis2有不生成类直接调用的方法,但是QName不容易找,每次查N久不到。有的反馈,使用CXF调用一样方便,但CXF还要使用maven下载jar,而......
  • 【python】threading模块之Semaphore
     threading模块之Semaphoreimportthreadingimporttimeimportrandom#Theoptionalargumentgivestheinitialvaluefortheinternalcounter;#itdefaultsto1.#Ifthevaluegivenislessthan0,ValueErrorisraised.semaphore=threading.Semaphore(0)......
  • python爬虫------------旅游的地点的爬取和可视化
    选题背景我国旅游行业的极速发展,因为之前疫情原因,使得国内旅游成为新风潮,由于国内疫情控解封,使得中国成为最先开放旅游的国家,本次项目可视化就是分析国内旅游的数据,分析适合出行旅游的时间与地点信息。设计方案 1.向目标网络发送请求   2.获取数据网页源码   3.筛选......