Python绘画

变量命名规范

  1. 变量名可以由字母、数字、下划线组成
  2. 数字不能作为变量名开头
  3. 见名知义

1.绘画常用指令

p.fd(x)	# forward:前进x距离
p.bk(x)	# backward:后退x距离
p.lt(x)	# left:左转x角度
p.rt(x)	# right:右转x角度
p.speed()	# 绘画速度:范围0-10。0就是直接成图,无绘画过程
p.color('red')	# 颜色的参数必须为字符串
p.color('rgb(r,g,b)')	# rgb范围:0-255。

在这里插入图片描述
在这里插入图片描述

A. 完整功能演示

import spen,random
spen.set_defaults(canvas=document['canvas'])
p = spen.Turtle("mouse")
p.speed(0)
p.lt(30)
m =15
n =30
for i in range(m):
	r = random.randint(0,255)
	g = random.randint(0,255)
	b = random.randint(0,255)
	color = 'rgb('+ str(r) + ',' + str(g) + ',' + str(b) + ')'
	p.color(color)
	for i in range(n):
		p.fd(10)
		p.rt(360/n)
	p.rt(360/m)
spen.done()	# 将所画的图形展现出来

在这里插入图片描述

2.画圆的指令

p.circle(半径,圆心角)
p.goto(x,y)	# 移动到指定坐标(x,y)
p.up()		# 抬笔
p.down()	# 落笔
p.fillcolor('black')	# 
p.begin_fill()
p.end_fill()
p.width()	# 画笔的粗细
p.hideturtle()

在这里插入图片描述
在这里插入图片描述

B. 绘制笑脸完整代码

import spen,random
spen.set_defaults(canvas=document['canvas'])
p = spen.Turtle("mouse")
p.speed(5)
# 绘制圆脸
p.color('gold')
p.fillcolor('gold')
p.begin_fill()
p.circle(66)
p.end_fill()
# 绘制眼睛
p.color('black')
p.up()
p.goto(-25,70)	# left eye
p.down()
p.fillcolor('black')
p.begin_fill()
p.circle(7)
p.end_fill()
p.up()
p.goto(25,70)	# right eye
p.down()
p.fillcolor('black')
p.begin_fill()
p.circle(7)
p.end_fill()
# 嘴巴
p.up()
p.goto(-25,45)
p.down()
p.rt(60)
p.color('black')
p.width(8)
p.circle(30,120)

p.hideturtle()	# 隐藏画笔
spen.done()	# 将所画的图形展示

在这里插入图片描述

3.其他

p.write('A',font=('字体名称',20,'normal'))	# 绘画文字
spen.bgcolor('rgb(23,43,54)')	 # 背景颜色
p.home()	# 回到原点并立直,画笔方向水平向右

在这里插入图片描述

C. 绘制太极图完整代码

import spen,random
spen.set_defaults(canvas=document['canvas'])
p = spen.Turtle("mouse")
p.speed(5)
p.hideturtle()	# 隐藏画笔
# 阴鱼
p.fillcolor('black')
p.begin_fill()
p.circle(50,180)
p.circle(-50,180)
p.circle(-100,180)
p.end_fill()
# 阳鱼
p.up()
p.goto(0,200)
p.down()
p.fillcolor('white')
p.begin_fill()
p.circle(50,180)
p.circle(-50,180)
p.circle(-100,180)
p.end_fill()
# 眼睛1
p.up()
p.goto(-10,135)
p.down()
p.fillcolor('white')
p.begin_fill()
p.circle(15)
p.end_fill()
# 眼睛2
p.up()
p.goto(-10,35)
p.down()
p.fillcolor('black')
p.begin_fill()
p.circle(15)
p.end_fill()

spen.done()	# 将所画的图形展示

在这里插入图片描述

D. 画同心圆

import spen,random
spen.set_defaults(canvas=document['canvas'])
p = spen.Turtle("mouse")
p.speed(5)
# p.hideturtle()	# 隐藏画笔
# 画同心圆
p.circle(100)
p.up()
p.goto(0,20)
p.down()
p.circle(80)

spen.done()	# 将所画的图形展示

在这里插入图片描述

E. 画五角星

import spen,random
spen.set_defaults(canvas=document['canvas'])
p = spen.Turtle("mouse")
p.speed(5)

p.lt(144)
p.color('black')
p.fillcolor('gold')
p.begin_fill()
for i in range(5):
	p.fd(200)
	p.rt(144)
p.end_fill()

p.hideturtle()	# 隐藏画笔
spen.done()	# 将所画的图形展示

在这里插入图片描述

4.元组字典&嵌套循环

元组: 一组有顺序的内容,但内容不能修改

  • 查找:a[n]; 通过索引取值,(0~列表长度-1)
  • 删除:delete a(直接删除整个元组)

字典

  1. 定义:键值对
  2. 创建方式:{“rr”:99,8:90}
  3. 注意事项:a.键不能重复命名;b.键只能是数字、字母串或者元组
    在这里插入图片描述

5.多模块应用

5.1 random模块

random.random()				# 随机生成0~1之间的浮点数
random.randint(a,b)			# 随机生成a~b之间的整数
random.uniform(a,b)			# 随机生成a~b之间的浮点数
random.randrange(a,b,step)	# 随机生成a~b之间以step为步数的整数
random.choice([1,2,3])		# 随机从列表中选取一个元素
random.sample([1,2,3],n)	# 随机从列表中选取n个元素

在这里插入图片描述

5.2 time模块

time.time()						# 表示当前时间的时间戳
time.ctime()					# 把一个时间戳表示为Sun Aug 23 14:31:59 2015形式
time.localtime()				# 将一个时间戳转换为当前时区的struct_time
time.strftime( format [, t])	# 把一个代表时间的元组或者struct_time转化为格式化的时间字符串
time.strptime(string[,format])	# 将格式字符串转化成struct_time,是time.strftime()函数的逆操作

在这里插入图片描述
数码管
在这里插入图片描述

F. 绘画当前时间

import spen,time
spen.set_defaults(canvas=document['canvas'])
p = spen.Turtle("mouse")
p.speed(5)

def draw_line(draw):
	p.up()
	p.fd(5)
	if draw:
		p.down()
	else:
		p.up()
	p.fd(25)
	p.up()
	p.fd(5)
def draw_digit(cur_time):
	if cur_time in [2,3,4,5,6,8,9]:
		draw_line(True)
	else:
		draw_line(False)
	p.right(90)
	if cur_time in [0,1,3,4,5,6,7,8,9]:
		draw_line(True)
	else:
		draw_line(False)
	p.right(90)
	if cur_time in [0,2,3,5,6,8,9]:
		draw_line(True)
	else:
		draw_line(False)
	p.right(90)
	if cur_time in [0,2,6,8]:
		draw_line(True)
	else:
		draw_line(False)
	if cur_time in[0,4,5,6,8,9]:
		draw_line(True)
	else:
		draw_line(False)
	p.right(90)
	if cur_time in [0,2,3,5,6,7,8,9]:
		draw_line(True)
	else:
		draw_line(False)
	p.right(90)
	if cur_time in [0,1,2,3,4,7,8,9]:
		draw_line(True)
	else:
		draw_line(False)
	p.lt(90)
	p.up()
	p.fd(20)
	
def draw_date (date):
	p.color ("red")
	for i in date:
		if i == ':':
			p.write(':',font=('Simhei',50,'normal'))
			p.fd(40)
		else:
			draw_digit (eval(i))

p.up()
p.fd(-200)
p.width(5)

date = time.strftime('%H:%M:%S', time.localtime())
draw_date(date)
# print(date)
p.hideturtle()	# 隐藏画笔
spen.done()	# 将所画的图形展示

在这里插入图片描述

5.3 math模块

在这里插入图片描述

参考:阿里天池学习课程

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值