实例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("格式错误")
运行结果:
思路和实例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("输入单位格式错误")
运行结果:
这里需要定义一个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()
运行结果:
这里给新手一个建议,当绘制图像的过程中出现循环,可以给每一次循环换上不同的笔刷颜色,便于理解循环
将海龟移到需要的位置(三角形的某条边的中点),然后利用循环画出三条边即可
#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()
运行结果:
叠加等边三角形其实是由三个等边三角形组成的,因此我们可以利用循环嵌套,外层循环画出三个三角形,并且在循环体内调整画笔位置和角度,方便内部循环画三角形,内部循环画等边三角形。
#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()
运行结果:
这道题的难度也不是很大,只是在画正方形的基础上给正方形的边分段,落笔的和未落笔的,他们中间只是多了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()
运行结果:
这道题我的第一反应是,六角形是由两个不同角度的等边三角形构成的,但是由于本人才疏学浅,目前没法用这个思路写出来程序(主要是实在用不明白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()
运行结果:
大家稍微注意一下我的思路就可以看到,每当遇到复杂一点的图形,我们首先就要想办法把它拆分成简单的图形,再找到简单图形之间的规律。
看到这个图形,想必大家第一反应都是循环,就不多赘述了。这里比较麻烦的一点是,要想达到和题目一样的图形,需要找到边和循环次数的关系,这就需要我们不断尝试了,循环体不是很难,具体如下:
#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标注编写程序的软件
学习任何一门课程都不是一件容易的事情,我们往往需要不断地努力,学习,交流,才能成就更好的自己。
以上思路仅为个人想法,用于抛砖引玉,欢迎大家讨论