Python有趣的小案例

Stella981
• 阅读 695
# 导入 turtle 模块
# 模块是 python 自带的工具箱,这里将工具箱导入就能使用了
# turtle 模块是 python 用来画图的工具箱
import turtle

# 将 turtle 里的工具拿出来,赋给 t 变量
# 照猫画虎用就是了,这些东西要到很后面才能理解
t = turtle.Turtle()

# 这一行用来加快画笔速度,从 1~9 依次变快,但 0 是最快
t.speed(0)

# 这是向前走,单位是像素
t.forward(100)
# 这是转弯,单位是角度
t.right(120)
t.forward(100)
t.right(120)
t.forward(100)
t.right(120)
# 复制三次,就画了一个三角形

# 正方形
# 长方形

# 如果我们需要改变三角形的边长怎么办?
# 这就要用到变量了,到时候只需改变变量就能改变长度
# 如果有相同的变量,后面定义的会覆盖前面的
l = 200
t.forward(l)
t.right(120)
t.forward(l)
t.right(120)
t.forward(l)
t.right(120)

# for 循环
# 循环还有 while 循环,考虑到用不着就不讲了
# 循环用来处理重复的事情

# range() 是一个区间
# range(3) 相当于 0 1 2
# range(5) 相当于 0 1 2 3 4

# i 取的是 range() 里的值,一次取一个,取一次就循环一次
# 冒号后面必有缩进,缩进的代表是同一个代码块
# 照着用就行了,注意一个字符都不能敲错,不能用中文符号
for i in range(3):
   t.forward(l)
   t.right(120)


# 如果想画两个三角形怎么办,再复制一个 for 循环?
# 我们用函数将代码封装起来,到时候直接调用就好了
# def 关键字用来定义函数, triangle 是函数名
# 必须要有冒号接缩进,函数里面也是一个代码块
def triangle():
   for i in range(3):
       t.forward(l)
       t.right(120)


# 函数的调用
# triangle()


# 函数可以传递参数进去
def triangle2(l):
   for i in range(3):
       t.forward(l)
       t.right(120)


# 需要传递个参数进去才能调用这个函数
# triangle2(250)

# 定一个函数画长方形

# 四则运算
#   +   加
#   -   减
#   *   乘
#   /   除
#   //  整除
#   %   取余

# 写一个画 n 边形的通用函数
def polygon(l, n):
   angle = 360 / n
   for i in range(n):
       t.forward(l)
       t.right(angle)


# polygon(100, 6)


# 画一个五角星
def five_star(l):
   for i in range(5):
       t.forward(l)
       t.right(144)


# five_star(100)


# 画一个圆
# 边长在 36 以上就是个圆
def circle():
   for i in range(36):
       t.forward(10)
       t.right(15)


# circle()


# 在指定的坐标画图
# 比如要在坐标为 (100, 150) 的位置画个正方形
def square(x, y, l):
   t.penup()
   t.goto(x, y)
   t.pendown()
   for i in range(4):
       t.forward(l)
       t.right(90)


# square(100, 150, 100)

# 将画笔定位封装成函数使用,就能有效去除重复代码
def setpen(x, y):
   t.penup()
   t.goto(x, y)
   t.pendown()
   t.setheading(0)


def square(x, y, l):
   setpen(x, y)
   for i in range(4):
       t.forward(l)
       t.right(90)


# square(100, 150, 100)


# 画一排正方形,共五个,间隔 10
# 蠢方法
# square(100, 150, 30)
# square(140, 150, 30)
# square(180, 150, 30)
# square(220, 150, 30)
# square(260, 150, 30)


# 使用 for 循环、函数

def square_line(x, y, l, n, dis):
   for i in range(n):
       inner_x = x + (l + dis) * i
       square(inner_x, y, l)


# square_line(100, 150, 30, 6, 10)


# 画一个正方形方阵
def square_matrix(x, y, l, n, dis, m):
   for i in range(m):
       inner_y = y - (l + dis) * i
       square_line(x, inner_y, l, n, dis)


# square_matrix(100, 150, 30, 5, 10, 6)


# 填充颜色,给图形上色
def five_star(l):
   t.fillcolor('yello')
   t.begin_fill()
   for i in range(5):
       t.forward(l)
       t.right(144)
   t.end_fill()

# five_star(100)

# 字典的简单用法

# 抽象画
# for i in range(500):
#     t.forward(i)
#     t.left(90)

# for i in range(500):
#     t.forward(i)
#     t.left(91)

colors = ['red', 'yellow', 'blue', 'green']


# for i in range(500):
#     t.pencolor(colors[i % 4])
#     t.circle(i)
#     t.left(91)

# sides = 5
# colors = ['red', 'yellow', 'blue', 'orange', 'green', 'purple']
# for i in range(360):
#     t.pencolor(colors[i % sides])
#     t.forward(i * 3 / sides + i)
#     t.left(360 / sides + 1)
#     t.width(i * sides / 200)

# 美队盾牌
def circle(x, y, r, color):
   n = 36
   angle = 360 / n
   pi = 3.1415926
   c = 2 * pi * r
   l = c / n
   start_x = x - l / 2
   start_y = y + r
   setpen(start_x, start_y)
   t.pencolor(color)
   t.fillcolor(color)
   t.begin_fill()
   for i in range(n):
       t.forward(l)
       t.right(angle)
   t.end_fill()


def five_star(l):
   setpen(0, 0)
   t.setheading(162)
   t.forward(150)
   t.setheading(0)
   t.fillcolor('WhiteSmoke')
   t.begin_fill()
   t.hideturtle()
   t.penup()
   for i in range(5):
       t.forward(l)
       t.right(144)
   t.end_fill()


def sheild():
   circle(0, 0, 300, 'red')
   circle(0, 0, 250, 'white')
   circle(0, 0, 200, 'red')
   circle(0, 0, 150, 'blue')
   five_star(284)


sheild()

# 结尾这一行必须有,照着用就行了
turtle.done()


效果图:
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
浅梦一笑 浅梦一笑
3年前
我惊了,python一行代码玩游戏!!!!
给IT入门加星标,提升编程技能freepythongames,一行代码就能进入使用Python开发的小游戏快乐玩耍!安装pip install freegamesPython包括随您的安装一起分发的大量标准库。标准库有一个称为Turtle的模块,这是一种向普通人介绍python编程的流行方法。今天介绍的所有游戏都是使用Python及其Turtle模块实现的。
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
待兔 待兔
2个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Karen110 Karen110
3年前
Python海龟绘图,绘出最靓丽的景色
Hello,大家好。我是Python进阶者。前言大家平时用程序画图的时候是不是都觉得比较棘手了,今天给大家介绍个神奇的画图模块turtle。它可以通过一些指令让画笔任意移动,可以说是很智能了。导入模块importturtleturtle基本用法一、设置画布大小要想画图就要先有画布,不然没法让图显示,我们可以先设置画布大小:turtle.scree
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
7个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这