python学习笔记day05

python学习笔记day03

一.海龟绘图案例

from turtle import *		# 加载模块中的所有内容,直接调用函数()
# import turtle				# 加载模块,调用格式:turtle.函数()


color('red', 'yellow')		# 指定颜色,'red'为线颜色,'yellow'为线包裹区域填充色
begin_fill()				# 开始填充
speed(0)					# 调整画图速度

while True:
    forward(200)			# 前进,或fd(200)
    left(170)				# 逆时针旋转170°
    # 如果画笔坐标到原点距离小于1,退出画图循环
    # pos()为position()简写
    if abs(pos()) < 1:
        break

end_fill()					# 结束填充

done()						# 暂停,避免画图完直接自动关闭窗口

二.turtle知识点1

turtle的两个类: TurtleScreen, RawTurtle(RawPen)

TurtleScreen类定义了图形窗口作为画板

RawTurtle(RawPen)类定义了画笔

RawTurtle操作对象TurtleScreen

画板中心位置为二位坐标系原点,画笔默认处于原点,指向x轴正方向

  1. 移动和绘制

forward(x): 前进x个像素点

backward(x): 后退x个像素点

left(x): 逆时针旋转x度

right(x): 顺时针旋转x度

done(): 暂停屏幕

from turtle import *


forward(760)		# 前进760个像素点
backward(960)		# 后退960个像素点
left(90)			# 画笔逆时针旋转90°
right(180)			# 右转180°
done()				# 暂停
  1. 正方形

speed(x):绘画速度,0最快,1最慢,[1, 10]逐级加快

fillcolor(x):指定填充颜色,不改变画线颜色,阉割版color(),x可以是字符串型颜色英文单词,也可以是 字符串型十六进制代码(查表)

color(x, y):类比fillcolor(),x为线条颜色,y为填充颜色

颜色填充时,非闭合图形也能填充

begin_fill():开始填充

penup():画笔抬起

position()或pos():获取画笔当前坐标

end_fill():结束填充

pendown():画笔落下

goto(x, y):画笔从当前位置移动到指定坐标,如果画笔当前状态为落下,则移动过程会画线

distance(x, y):画笔到指定点的距离和角度

towards(x, y):到指定点的逆时针角度

xcor():获取箭头x坐标

ycor():获取箭头y坐标

from turtle import *


speed(10)
fillcolor('#00DB00')    # 先运行,被后面的color填充覆盖
color('red', 'yellow')
begin_fill()
penup()

print(position())
print(abs(position()))

for i in range(4):
    forward(100)
    left(90)

print(position())
# 并非回到原点,有误差
print(abs(position()))

end_fill()
pendown()
goto(100, 100)
# 获取箭头状态
# 获取箭头位置
print(position())

# 获取箭头x, y坐标
print(xcor())
print(ycor())

# 箭头到指定点的距离和角度
print(distance((0, 0)))
# 逆时针角度
print(towards((0, 0)))

left(225)

# 暂停
done()
  1. 圆形
from turtle import *


speed(0)
for i in range(180):
    forward(4)
    right(2)

penup()
goto((0, 200))
pendown()
left(180)
# circle(半径)
circle(100)

done()
  1. 正方体
from turtle import *

# 正方体
speed(5)
for i in range(4):
    forward(100)
    left(90)
penup()
goto((100, 0))
pendown()
goto((150, 50))
left(90)
forward(100)
left(90)
forward(100)
goto((0, 100))
penup()
goto((100, 100))
pendown()
goto((150, 150))
penup()
goto((0, 0))
right(135)
for i in range(1, int(50 * 2 ** 0.5) // 10 + 1):
    forward(5)
    pendown()
    forward(5)
    penup()
goto((50, 50))
left(45)
for i in range(1, 100 // 10 + 1):
    forward(5)
    pendown()
    forward(5)
    penup()
goto((50, 50))
right(90)
for i in range(1, 100 // 10 + 1):
    forward(5)
    pendown()
    forward(5)
    penup()

goto((0, 0))

done()

三.风车

math数学库,调用三角函数与pi

for-in循环中i不参与运算时可以使用_(下划线)代替

hideturtle():隐藏箭头

showturtle():显示箭头

  • 方法1
# 风车
from turtle import *
from math import *


colors = ['yellow', '#00FFFF', '#28FF28', 'pink']
for color in colors:
    fillcolor(color)
    begin_fill()
    forward(200)
    right(90)
    # for-in循环中i不参与运算时可以使用_(下划线)代替
    for _ in range(180):
        right(1)
        forward(200 * sin(pi / 360))
    end_fill()

# 显示箭头
showturtle()
# 隐藏箭头
hideturtle()

done()
  • 方法2
# 风车
from turtle import *
from math import *


colors = ['yellow', 'pink', '#28FF28', '#00FFFF' ]
for color in colors:
    fillcolor(color)
    begin_fill()
    forward(200)
    left(90)
    circle(100, -180)		# 顺时针画圆,画笔箭头倒着走
    end_fill()

# 隐藏箭头
hideturtle()

done()

四.turtle知识点2

  • 画布上添加文字

语法:write(arg,move,align,font)

arg:文字内容

move:默认为False,为True时画笔移到文字右下角,会画线,

align:‘right’, ‘left’, ‘middle’, 画笔位置 右 左 中(执行在move前)

from turtle import *

# 画布上添加文字
# 语法:write(arg,move,align,font)
# move默认为False,如果改为True,箭头移动到文字右下角,类比goto(),结合align可以设置下划线
write('你好,世界!', move=True, align='left', font=("华文行楷", 15, "normal"))

# 设置背景颜色
bgcolor('#00FFFF')

# screensize(4000, 2500)
# 设置背景图片
bgpic("./2.png")

# 清空绘图屏幕
# clearscreen()

# 自定义函数


# def main(x, y):
#     bgpic("./2.png")

# 鼠标事件
# 单击,获取点击位置的坐标,并传递给main函数
# onclick(main)

# 释放
# onrelease(main)

# 拖拽
# ondrag(main)

# # 修改画笔的粗细
# pensize(100)
# # 修改画笔颜色
# pencolor('blue')
# fd(100)

done()

五.火柴人

from turtle import *
from math import *

speed(5)
penup()
goto(-100, 50)
pendown()

# 头部
pensize(2)
circle(50)

# 身体
right(90)
fd(120)

# 腿
penup()
goto(-100 - 120 * sin(pi / 4), -70 - 120 * sin(pi / 4))
pendown()
for a in [[225, 120], [60, 60], [100, 90]]:
    right(a[0])
    fd(a[1])

# 胳膊
for i in [[10, 115, 45], [-20, 315, 315]]:
    penup()
    goto(-100, i[0])
    pendown()
    for j in [[1, 50], [2, 60]]:
        left(i[j[0]])
        fd(j[1])

# 眼睛
pensize(5)
left(135)
for i in [-80, -120]:
    penup()
    goto(i, 100)
    pendown()
    fd(10)

# 爱心
penup()
goto(100, 50)
left(30)				# 如果角度为45,会好画很多
fillcolor('pink')
begin_fill()
circle(50, 195)
for b in [90, 195]:
    fd(100 * cos(pi / 24) * cos(5 * pi / 24) / cos(pi / 4))
    left(b)
goto(100, 50)
circle(50, -195)

end_fill()
hideturtle()

done()

你可能感兴趣的:(python,学习,开发语言)