初入
代码1(绘制同心圆):
import turtle
turtle.pensize(2)
turtle.circle(10)
turtle.circle(40)
turtle.circle(50)
turtle.circle(60)
turtle.circle(80)
turtle.circle(100)
方法2
import turtle
turtle.showturtle()
for i in range(1,5):
turtle.penup()
turtle.goto(-150,-20*i)
turtle.pendown()
turtle.circle(20*i)
for i in range(1,5):
turtle.penup()
turtle.goto(100,-20*i)
turtle.pendown()
turtle.circle(40*i)
turtle.hideturtle()
turtle.done()
运行效果:
代码2(绘制五角星):
from turtle import *
color('red','green')
begin_fill()
for i in range (5):
fd(200)
rt(144)
end_fill()
done()
运行效果:
代码3(华氏度和摄氏度的转换)
TempStr = input('请输入带有符号字符的温度值:')
if TempStr[-1] in ['f','F']:
C =(eval(TempStr[0:-1]) - 32)/1.8
print('转换后的温度是{:.2f}C'.format(C))
elif TempStr[-1] in ['C','c']:
F = 1.8 * eval(TempStr[0:-1]) + 32
print('转换后的温度是{:.2f}F'.format(F))
else:
print('输入格式错误')
运行效果:
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入带有符号字符的温度值:82F
转换后的温度是27.78C
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入带有符号字符的温度值:82C
转换后的温度是179.60F
eval: 评估函数 (去掉参数最外侧的引号,并执行余下语句的函数,我的理解是把字符串转掉并且可以自行计算)
代码任务:
获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:
如果输入值是0,直接输出"Hello World"
如果输入值大于0,以两个字符一行方式输出"Hello World"(空格也是字符)
如果输入值小于0,以垂直方式输出"Hello World"
代码:
x = int(input(''))
if x ==0:
print('Hello World')
elif x > 0:
print('He\nll\no \nWo\nrl\nd')
else:
for x in "Hello World": #可以采用for循环遍历每一个字符达到垂直的效果
print(x)
效果展示:
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入一个值:5
He
ll
o
Wo
rl
d
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入一个值:0
Hello World
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入一个值:-2
H
e
l
l
o
W
o
r
l
d
>>>
代码任务
获得用户输入的一个字符串,格式如下:
M OP N
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)
根据OP,输出M OP N的运算结果,统一保存小数点后2位。
注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
代码(思路方法1):
n=input('请输入计算表达式子:')
print("{:.2f}".format(eval(n)))
运行效果:
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入计算表达式子:5+2
7.00
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入计算表达式子:5/2
2.50
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入计算表达式子:6+7/8*3-4
4.62
>>>
代码(思路方法2)
while (True):
n=input('请输入数学表达式子:')
if not n:
break
print(round(eval(n),2))
print('不好意思,程序暂时不能理解')
运行效果:
>>>
=================== RESTART: C:/Users/asus/Desktop/111.py ===================
请输入数学表达式子:5+10
15
请输入数学表达式子:100/55-54*1.666
-88.15
请输入数学表达式子:
代码(思路3)
x=input('请输入一个度数 ')
if x[-1] in ['f','F']:
C=(eval(x[0:-1]) - 32 ) / 1.8
print(round(C,2),'C')
elif x[-1] in ['c','C']:
F = eval(x[0:-1]) * 1.8 + 32
print(round(F,2),'F')
n = input('请输入')
if n[-1] in ['p','P']:
C=(eval(n[0:-1])-32)/18
print('C{:.2f}'.format(C))
代码任务:
获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。
0到9对应的中文字符分别是:零一二三四五六七八九
代码:
template = "零一二三四五六七八九"
s = input()
for c in s: #遍历每一个s输入的数字
print(template[eval(c)], end="") #索引
#print()中增加end=""参数表示输出后不增加换行,多个print()可以连续输出。
代码任务:
人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:
人民币和美元间汇率固定为:1美元 = 6.78人民币。
程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元USD表示,符号和数值之间没有空格。
注意:
(1) 这是一个OJ题目,获得输入请使用input() ;
(2) 不提示输出格式错误,结果小数点后保留两位。
CurStr = input()
if CurStr[:3] == "RMB": #选到第三位
print("USD{:.2f}".format(eval(CurStr[3:])/6.78))
elif CurStr[:3] in ['USD']:
print("RMB{:.2f}".format(eval(CurStr[3:])*6.78)) #从第三位开始
'''这个代码是实例1的一个扩展,注意以下3点:
(1) eval()函数将字符串转换成数字,不能省略;
(2) == 表示 "等于",in 表示成员包含,对于这个题目,由于只允许输入采用全大写方式,两种方法均可;
(3) :.2f输出小数点后两位。
'''
示例1:RMB123
示例2:USD20
输出
示例1:USD18.14
示例2:RMB135.60
绘制蟒蛇
代码:
import turtle 引入海龟库
turtle.setup(650,350,200,200) 设置窗体大小
turtle.penup() 抬起画笔飞行
turtle.fd(-250) 海龟倒退行进(由于海龟飞起,所以没有痕迹)
turtle.pendown() 将海龟落下
以上的代码让海龟离开默认的中心的去到左侧的某个位置
从这里开始对海龟做准备工作,对海龟样式/尺寸进行设置
turtle.pensize(25) 调整腰围,画笔的宽度
turtle.pencolor('purple') 改颜色
turtle.seth(-40) 调准绝对方向,准备启动绘制
4次循环绘制蟒蛇的4个身体部分
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
绘制蟒蛇脖子部分
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180) 回头
turtle.fd(40*2/3) 行进
turtle.done() 程序不会退出,要手动关闭窗体,
如果想自动关闭窗体,去掉这行代码就行
效果:
turtle 库基本介绍:
turtle(海龟)库是turtle绘图体系的Python实现,是一种绘图方式,是Python语言的标准库之一,是入门级的图形绘制函数库。
相应的函数:
turtle.goto(x,y) 指定坐标:让海龟去哪个地方。
实例代码:
import turtle
turtle.goto(100,100) #记住开始海龟中心点是默认在(0,0),从中心点开始画
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0) #回到中心点
图析:
控制海龟的函数:
turtle.bk( 单位:像素 ) 表示沿着海龟的反方向运行。
turtle.fd( 像素 ) 表示沿着海龟的正前方运行。
turtle.circle( ) 表示以海龟的当前位置,左侧的某一个点为圆心,进行曲线运行。
turtle.seth(45) #45°转弯
turtle.seth(-135) #朝向反向的135°转弯
实例:(绘制Z型曲线)
import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
效果:小结:
练习
1.绘制正方形
import turtle
turtle.pensize(10)
turtle.color("pink")
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
方法2:
import turtle as t
t.pensize(2)
for i in range(4):
t.fd(150) 连续左转4次,距离150PX
t.left(90)
效果:2.绘制六边形
import turtle
turtle.pensize(5)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
turtle.right(60)
turtle.fd(100)
方法2
import turtle
for i in range(1,7):
turtle.pensize(5)
turtle.fd(100)
turtle.right(60)
效果
3.八边形
import turtle
for i in range(1,9):
turtle.pensize(5)
turtle.fd(100)
turtle.right(45) 一圈360/8条边
4.八角星绘制
import turtle as t
t.pensize(2)
for i in range(8):
t.fd(150)
t.left(135) 参数135刚好为八角
计算循环和角度的乘积,应该为360的整数倍。
5.五角星
import turtle
for i in range(5):
turtle.pensize(5)
turtle.fd(100)
turtle.right(145)
5.绘制一个叠边形,其中,叠边形内角为100度
import turtle as t
t.pensize(2)
for i in range(9):
t.fd(150)
t.left(80) #720/9
一共9条边,共2圈,每次左转角度为80度(720/9)。
7.风车
import turtle as t
t.pensize(2)
for i in range(4):
t.seth(90*i)
t.fd(150)
t.right(90)
t.circle(-150, 45)
t.goto(0,0)
turtle 程序语法元素分析
库引用
例如:
import turtle import <库名>
turtle.fd(45) <库名> . <函数名> (函数参数)
画笔控制函数
运动控制函数
走直线fd,走曲线circle
方向控制函数
课外拓展:
绘制奥林匹克的五环标志
import turtle
colors=('blue','black','red','yellow','green')
xs=(-110,0,110,-55,55)
ys=(-25,-25,-25,-75,-75)
radius=45
for i in range(len(colors)):
turtle.color(colors[i])
turtle.penup()
turtle.goto(xs[i],ys[i])
turtle.pendown()
turtle.circle(radius)
turtle.hideturtle()
turtle.done()
绘制填充图形
#绘制填充图形
#思考:除了下面的逐个画的方式,还有别的更有效的方式编写代码吗?
#比如:循环?后面将学到的函数?
#如果使用循环,那么如何设计循环?
import turtle
#这里是画填充三角形
turtle.penup()
turtle.goto(-200,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('red')
turtle.circle(40,steps=3)
turtle.end_fill()
#这里是画填充正角形
turtle.penup()
turtle.goto(-100,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('blue')
turtle.circle(40,steps=4)
turtle.end_fill()
#这里是画填充五边形
turtle.penup()
turtle.goto(0,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('green')
turtle.circle(40,steps=5)
turtle.end_fill()
#这里是画填充六边形
turtle.penup()
turtle.goto(100,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('purple')
turtle.circle(40,steps=6)
turtle.end_fill()
#这里是画填充圆形
turtle.penup()
turtle.goto(200,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('black')
turtle.circle(40)
turtle.end_fill()
turtle.hideturtle()
turtle.done()
绘制乘法表
import turtle
turtle.showturtle()
for i in range(1,10,1): #控制行
for j in range(1, i+1, 1): #控制列
#打印i*j的乘积信息,后面跟个Tab键控制对齐
print(i,'*',j,'=',i*j,'\t',end='')
s=str(i)+'*'+str(j)+'='+str(i*j)
turtle.penup()
turtle.goto(-300+j*40,200+i*(-20)) #整张乘法表的左上角起点位置是(-300,200)
turtle.pendown()
turtle.write(s)
print() #每行末尾的换行,turtle就不需要换行了
#画完乘法表隐藏小乌龟
turtle.hideturtle()
turtle.done()
方法2
import turtle
turtle.showturtle()
for i in range(1,10,1): #控制行
for j in range(1, i+1, 1): #控制列
#打印i*j的乘积信息,后面跟个Tab键控制对齐
#print(i,'*',j,'=',i*j,'\t',end='')
s=str(i)+'*'+str(j)+'='+str(i*j)
turtle.penup()
turtle.goto(-300+j*40,200+i*(-20)) #整张乘法表的左上角起点位置是(-300,200)
turtle.pendown()
turtle.write(s)
#print() #每行末尾的换行,turtle就不需要换行了
#画完乘法表隐藏小乌龟
turtle.hideturtle()
turtle.done()
绘制爱心
import turtle
from turtle import *
def curvemove():
for i in range(200):
right(1)
forward(1)
color('red','pink')
begin_fill()
left(140)
forward(111.65)
curvemove()
left(120)
curvemove()
forward(111.65)
end_fill()
done()
绘制sin 函数
#打印sin函数
import turtle,math
turtle.showturtle()
#以下是写出坐标O
turtle.penup()
turtle.goto(20,-30)
turtle.pendown()
turtle.write('O')
#以下是画出x轴
turtle.penup()
turtle.goto(-300,0)
turtle.pendown()
turtle.goto(300,0)
turtle.goto(290,10)
turtle.goto(300,0)
turtle.goto(290,-10)
turtle.penup()
turtle.goto(300,-20)
turtle.write('x')
#以下是画出y轴
turtle.penup()
turtle.goto(0,-300)
turtle.pendown()
turtle.goto(0,300)
turtle.goto(10,290)
turtle.goto(0,300)
turtle.goto(-10,290)
turtle.penup()
turtle.goto(20,300)
turtle.write('y')
#以下是画出sin函数的曲线
turtle.color('blue')
turtle.pensize(3)
turtle.penup()
turtle.goto(-175,50*math.sin((-175/100)*2*math.pi))
turtle.pendown()
for x in range(-175,176):
turtle.goto(x,50*math.sin((x/100)*2*math.pi))
turtle.hideturtle()
turtle.done()
方法2
#打印sin函数
import turtle,math
#隐藏小乌龟
turtle.hideturtle()
#以下是写出坐标O
turtle.penup()
turtle.goto(20,-30)
turtle.pendown()
turtle.write('O')
#以下是画出x轴
turtle.penup()
turtle.goto(-300,0)
turtle.pendown()
turtle.goto(300,0)
turtle.goto(290,10)
turtle.goto(300,0)
turtle.goto(290,-10)
turtle.penup()
turtle.goto(300,-20)
turtle.write('x')
#以下是画出y轴
turtle.penup()
turtle.goto(0,-300)
turtle.pendown()
turtle.goto(0,300)
turtle.goto(10,290)
turtle.goto(0,300)
turtle.goto(-10,290)
turtle.penup()
turtle.goto(20,300)
turtle.write('y')
#以下是画出y=2*x+50的曲线
turtle.penup()
turtle.color('red')
turtle.pensize(3)
x=-100
turtle.goto(x,2*x+50)
turtle.pendown()
for x in range(-100,100):
turtle.goto(x,2*x+50)
turtle.hideturtle()
turtle.done()
20.建立坐标系
import turtle as t
t.pensize(2)
t.ht()
t.pu()
t.goto(-250,0)
t.pd()
t.fd(500)
t.left(150)
t.fd(15)
t.pu()
t.goto(250,0)
t.write('X')
t.pd()
t.right(300)
t.fd(15)
t.pu()
t.goto(0,-250)
t.pd()
t.right(120)
t.fd(500)
t.left(150)
t.fd(15)
t.pu()
t.goto(0,250)
t.pd()
t.left(60)
t.fd(15)
t.write('Y')
小结:
详情看python文件夹收藏的文档
链接:https://www.icourse163.org/learn/BIT-268001?tid=1207014257#/learn/content?type=detail&id=1212094124&cid=1215248145