实例1
#e1.1TempConvert.py
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("输入格式错误")
输入部分加了eval()就相当于把输入内容去掉引号,即转化为非字符类型,因此需要用户再次输入单位,完成转化
#exercise.2.1.py
TempStr = eval(input("请输入带无单位的温度值:"))
Unit = input("请输入单位:")
if Unit in ['F','f'] :
C = (TempStr - 32)/1.8
print("{:.0f}C".format(C))
elif Unit in ['C','c'] :
F = 1.8 * TempStr +32
print("{:.0f}F".format(F))
else :
print("格式错误")
运行结果:
2.2汇率兑换程序。 题目:按照温度转换程序的设计思路,按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序思路和实例1相似,这里不再赘述
#exercise.2.2
money = input("请输入货币数量和单位:")
if money[-1] in ['M','m'] :
RMB = eval(money[0:-1]) / 6
print("{}R".format(RMB))
elif money[-1] in ['R','r'] :
Mei = eval(money[0:-1]) * 6
print("{}M".format(Mei))
else :
print("输入单位格式错误")
运行结果:
2.3彩色蟒蛇绘制。 题目:改造实例代码2.1,绘制一条彩色蟒蛇,即在绘制Python蟒蛇的每个小段时,画笔的绘制颜色会发生变化。这里需要定义一个color列表存放不同颜色,如果没有学过列表,就当作它是一个可以存放元素的容器,下标从0到n-1,其中n为元素个数
#exercise 2.3 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 22:48 #@Sofeware : VS Code import turtle color = ['black','grey','pink','gold'] turtle.setup(650,320,200,200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.seth(-40) for i in range(4) : turtle.pencolor(color[i]) turtle.circle(40,80) turtle.circle(-40,80) turtle.pencolor('purple') turtle.circle(40,40) turtle.fd(40) turtle.pencolor('red') turtle.circle(16,180) turtle.fd(40) turtle.done()
运行结果:
这里给新手一个建议,当绘制图像的过程中出现循环,可以给每一次循环换上不同的笔刷颜色,便于理解循环
2.4 等边三角形的绘制。 题目:使用turtle库中的turtle.fd函数和turtle.seth()函数绘制一个等边三角形,效果如图2.8所示。将海龟移到需要的位置(三角形的某条边的中点),然后利用循环画出三条边即可
#exercise 2.4 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 0:23 #@Sofeware : VS Code import turtle turtle.setup(800,600,400,400) turtle.penup() turtle.left(90) turtle.fd(150) turtle.pendown() turtle.left(30) for i in range(3) : turtle.left(120) turtle.fd(400) turtle.done()
运行结果:
2.5 叠加等边三角形的绘制。 题目:使用turtle库中的turtle.fd)函数和turtle.seth()函数绘制一个叠加等边三角形,效果如图2.9所示。叠加等边三角形其实是由三个等边三角形组成的,因此我们可以利用循环嵌套,外层循环画出三个三角形,并且在循环体内调整画笔位置和角度,方便内部循环画三角形,内部循环画等边三角形。
#exercise 2.5 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 15.48 #@Sofeware : VS Code import turtle turtle.setup(800,600,200,200) turtle.speed(1) turtle.penup() turtle.fd(50) turtle.pendown() for i in range(3) : if i == 1 : turtle.left(60) if i == 2 : turtle.left(120) turtle.fd(100) turtle.right(60) for j in range(3) : if i % 2 == 0 : turtle.left(120) else : turtle.right(120) turtle.fd(100) turtle.done()
运行结果:
2.6无角正方形的绘制。 题目:利用turtle库函数绘制一个没有角的正方形,效果如图2.10所示。这道题的难度也不是很大,只是在画正方形的基础上给正方形的边分段,落笔的和未落笔的,他们中间只是多了turtle.penup()和turtle.pendown()而已
#exercise 2.6 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 16.32 #@Sofeware : VS Code import turtle turtle.setup(800,600,200,200) turtle.speed(1) turtle.penup() turtle.fd(100) turtle.pendown() turtle.left(90) for i in range(4) : turtle.fd(80) turtle.penup() turtle.fd(20) turtle.left(90) turtle.fd(20) turtle.pendown() turtle.fd(80) turtle.done()
运行结果:
2.7六角形的绘制。 题目:利用turtle库绘制一个六角形,效果如图2.11所示。这道题我的第一反应是,六角形是由两个不同角度的等边三角形构成的,但是由于本人才疏学浅,目前没法用这个思路写出来程序(主要是实在用不明白goto()函数),有想法的朋友可以在评论区指教。于是我换了种思路:
这个六角形是由外圈和内圈构成的(红笔为外圈)
于是我们使用两个循环,它们之间是平行关系,第一个循环画外圈,以两条边为一组,循环六次画出十二条边。第二个循环画内圈,内圈更简单,单纯的seth()和fd()就可以做到。但是画内圈之前记得调整画笔位置和角度哦!
#exercise 2.7 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 16.45 #@Sofeware : VS Code import turtle turtle.setup(800,600,200,200) turtle.speed(1) turtle.penup() turtle.fd(30) turtle.pendown() '''画外圈''' for i in range(6) : turtle.left(120) turtle.fd(80) turtle.right(60) turtle.fd(80) '''连接内部线条''' turtle.left(120) turtle.fd(80) for j in range(6) : turtle.fd(80) turtle.left(60) turtle.done()
运行结果:
大家稍微注意一下我的思路就可以看到,每当遇到复杂一点的图形,我们首先就要想办法把它拆分成简单的图形,再找到简单图形之间的规律。
2.8 正方形螺旋线的绘制。 题目:利用turtle库绘制一个正方形螺旋线,效果如图2.12所示看到这个图形,想必大家第一反应都是循环,就不多赘述了。这里比较麻烦的一点是,要想达到和题目一样的图形,需要找到边和循环次数的关系,这就需要我们不断尝试了,循环体不是很难,具体如下:
#exercise 2.8 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 17:27 #@Sofeware : VS Code import turtle turtle.setup(800,600,200,200) turtle.speed(20) for i in range (200) : turtle.left(90) turtle.fd(2*i) turtle.done()
运行结果:
我们还可以稍微修改一下这段代码,给图形加上颜色,单一的颜色也挺没意思的,因此我们尝试着给他的四边染上不同的颜色
#exercise 2.8 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 20:33 #@Sofeware : VS Code import turtle turtle.setup(800,600,200,200) turtle.speed(20) color = ['red','grey','darkgreen','gold'] for i in range (200) : turtle.pencolor(color[i%4]) turtle.left(90) turtle.fd(2*i) turtle.done()
运行结果:
虽然很丑,但好像还挺好玩的,大家可以试着更改颜色,或者更改参数,看看最后会呈现什么样的效果。
彩蛋细心的小伙伴可能已经发现我的程序之前加了几行奇怪的代码
#exercise 2.8 #!/usr/bin/python #-*- coding:-*- #@Author : Rosediver #@Time : 2022/5/28 17:27 #@Sofeware : VS Code
这段代码相当于程序的水印啦,第1行是我们最熟悉的程序名称,最好为英文。
第2行: #!/usr/bin/python是告诉linux系统这是一个python文件。不知道linux系统的没关系,你也到了接触linux的时候了[手动狗头]
第3行:#-*- coding:
第4行:#@Author : Rosediver标注程序作者,比如我Rosediver
第5行:#@Time : 2022/5/28 17:27标注编写程序的时间
第6行:#@Sofeware : VS Code标注编写程序的软件
结尾学习任何一门课程都不是一件容易的事情,我们往往需要不断地努力,学习,交流,才能成就更好的自己。
以上思路仅为个人想法,用于抛砖引玉,欢迎大家讨论



