目录

2.1实例1的修改。

2.2汇率兑换程序。

2.3彩色蟒蛇绘制。

2.4等边三角形的绘制。

2.5叠加等边三角形的绘制。

2.6无角正方形的绘制。

2.7六角形的绘制。

2.8正方形螺旋线的绘制。

彩蛋

结尾

2.1实例1的修改。

题目:改造实例代码1.1,采用eval(input(<提示内容>))替换现有输入部分,并使输出的温度值为整数。

实例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:<encoding name> -*-
#@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:<encoding name> -*-
#@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:<encoding name> -*-
#@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:<encoding name> -*-
#@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:<encoding name> -*-
#@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:<encoding name> -*-
#@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:<encoding name> -*-
#@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:<encoding name> -*-
#@Author : Rosediver
#@Time : 2022/5/28 17:27
#@Sofeware : VS Code

这段代码相当于程序的水印啦,第1行是我们最熟悉的程序名称,最好为英文。

第2行: #!/usr/bin/python是告诉linux系统这是一个python文件。不知道linux系统的没关系,你也到了接触linux的时候了[手动狗头]

第3行:#-*- coding:<encoding name> -*-这一行Windows不会识别

第4行:#@Author : Rosediver标注程序作者,比如我Rosediver

第5行:#@Time : 2022/5/28 17:27标注编写程序的时间

第6行:#@Sofeware : VS Code标注编写程序的软件

结尾

学习任何一门课程都不是一件容易的事情,我们往往需要不断地努力,学习,交流,才能成就更好的自己。

以上思路仅为个人想法,用于抛砖引玉,欢迎大家讨论

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐