import turtle#input是一个关键字,用来引用一些外部函数,这里的函数是应入一个名字叫turtle的函数库

def drawsnake(rad,angle,len,neckrad):#启动绘制蟒蛇的功能,rad(40),angle(80),len(5),neckrad(15)
    #rad弧度,angle角度,len长度,neckrad
    for i in range(len):
        turtle.circle(rad,angle)#表示小乌龟沿着圆形爬行的的弧度值
        turtle.circle(-rad,angle)
    turtle.circle(rad,angle/2)
    turtle.fd(rad)#表示小乌龟向前直线爬行移动,有一个参数指标是爬行的距离
    turtle.circle(neckrad+1,180)
    turtle.fd(rad*2/3)

def main():
    turtle.setup(1300,800,0,0)#宽度高度以及开始的位置
    pythonsize = 30
    turtle.pensize(pythonsize)#小乌龟运行轨迹的宽度
    turtle.pencolor("blue")#小乌龟运行轨迹的颜色
    turtle.seth(-40)#表示小乌龟启动时的方向。它包含一个输入的参数,是角度值(0表示向东)(90向北)
    # (270向南)(180西)(负值表示相反的方向),这里是指向东南方向40度
    drawsnake(40,80,5,pythonsize/2)
main()
'''首先这个代码没有imput输入,也没有print输出,其次,代码大部分是<a><b>()类型的函数运行的仅有1个赋值表达式
最后,代码通过def分割成了若干块'''
#turtle库,同学们头脑里需要有这样一个概念:想象一个小乌龟,在一个横坐标为x,纵坐标为y的坐标系原点,(0,0)位置开始
#它根据一组函数的指令的控制,在这个品面坐标系中移动,从而在他爬行的路径上绘制了图形
#def用于定义函数,这段程序中,共出现了两次def关键字,包含两个函数drawsnake和main
#函数是一组代码的集合,用于表达一个功能,或者说,函数表示一组代码的归属,函数名就是这段代码
#def所定义的函数在程序中未经调用不能执行,需要通过函数名调用才能执行
#可以看到,两个def语句定义的函数所包含语句和def行存在缩进的关系,def后连续的缩进函数都是这个函数的一部风。
#由于def定义的函数在程序中未经调用不会被执行,整个程序第一条执行语句是main(),他表示执行名字为main()的函数
#从而,该函数跳转到mian()函数定义的一组语句中执行,即开始执行turtle.setup()语句
#同样的,mian()函数的最后一句语句调用了drawsnake()函数,当执行到这条语句时,程序跳转到drawsnake()函数中执行
#程序运行main()函数中的语句,遇到setup函数
#turtle中的turtle.setup()函数用于启用一个图形窗口,他有四个参数
#turtle.setup(width,height,startx,starty)
#分别是:启动窗口的宽度和高度
#表示窗口启动时,窗口左上角在屏幕中的坐标位置
#我们所使用的显示屏幕也是一个坐标系,该坐标系以左上角为原点,向左和向下分别是x轴和y轴
#蟒蛇程序代码启动一个1300像素宽,800像素高的窗口,该窗口的左上角是屏幕的左上角。
#turtle重的turtle.pensize()函数是指小乌龟运行轨迹的宽度,它包含一个输入参数,这里我们把它设为30像素,用pythonsize
#变量表示