实例1的修改。改造实例代码1.1,采用eval(input(<提示内容>))替换现有的输入部分,并使输出的温度值为整数。
实例1代码如下:
TempStr = eval(input("请输入带无单位的温度值:"))
Unit = input("请输入单位:")
if Unit in ['F','f'] :
C = (TempStr - 32)/1.8
print("{:.2f}C".format(C))
elif Unit in ['C','c'] :
F = 1.8 * TempStr +32
print("{:.2f}F".format(F))
else :
print("格式错误")
由于eval函数的作用是将input函数获取到的字符转化为Python语句,因此只需要在input函数外嵌套一个eval函数,但需要注意的是,eval无法转换混合的字符串,例如输入45F,eval函数是无法将其转换的,需要使用新的变量unit来存放单位;输出温度为整数只需要将实例1中的2f改为0f,代表着这个槽位置只保留整数输出
#这里使用了一个异常捕获,你也可以使用if elif else 格式来写
try:
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))
except:
print("输入的格式错误")
汇率兑换程序。按照温度转换程序的设计思路,按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序。
只要按照1美元=6人民币这个规则,参照实例1就可以直接修改,无需多说
Money=input("请输入带符号的金钱值:")
if Money[-1] in ['R','r']:
#这里注意一定要用eval转换,不然获取到的依旧是字符串,不能用于计算
Dollor=eval(Money[0:-1])*6
print("转换后的金钱值为{:.2f}$".format(Dollor))
elif Money[-1] in '$':
Renminbi=eval(Money[0:-1])/6
print("转换后的温度为{:.2f}R".format(Renminbi))
else:
print("输入的格式错误")
实例2的修改,改造实例代码2.1,绘制一条彩色蟒蛇,即在绘制python蟒蛇的每个小段时,画笔的绘制颜色会发生变化。
实例2代码如下:
import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
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)
由于绘制一条彩色蟒蛇需要多种颜色出现,因此要使用一个列表color来存放即将绘制的各个颜色,然后使用下标来索引每一个颜色,放入每一小段绘制循环中即可出现彩色蟒蛇
import turtle
turtle.setup(650,350,200,200)
color=['red','green','blue','yellow']
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,80/2)
turtle.fd(40)
turtle.pencolor("grey")
turtle.circle(16,180)
turtle.fd(40*2/3)
等边三角形的绘制。使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形,效果如图2.8所示。
turtle.seth()用于调整海龟的绘制角度,turtle.fd()用于海龟的前进长度
import turtle
turtle.setup(600,600,500,200)
turtle.penup()
turtle.seth(90)
turtle.fd(200)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(-60)
turtle.fd(300)
turtle.seth(180)
turtle.fd(300)
turtle.seth(60)
turtle.fd(300)
叠加等边三角形的绘制,使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形,效果如图2.9所示
在2.4的基础上增加代码:
turtle.penup()
turtle.seth(-120)
turtle.fd(150)
turtle.pendown()
turtle.seth(0)
turtle.fd(150)
turtle.seth(-120)
turtle.fd(150)
turtle.seth(120)
turtle.fd(150)
import turtle
turtle.setup(600,600,500,200)
turtle.penup()
turtle.seth(90)
turtle.fd(200)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(-60)
turtle.fd(300)
turtle.seth(180)
turtle.fd(300)
turtle.seth(60)
turtle.fd(300)
turtle.penup()
turtle.seth(-120)
turtle.fd(150)
turtle.pendown()
turtle.seth(0)
turtle.fd(150)
turtle.seth(-120)
turtle.fd(150)
turtle.seth(120)
turtle.fd(150)
无角正方形的绘制。利用turtle库函数绘制一个没有角的正方形,效果如图2.10所示
这里由于使用单一动作太过繁琐,因此可以采用更加简洁的for循环方法,设置好下面的横线绘制动作,只需改变每一次绘制的角度就可以完美实现了
import turtle
turtle.setup(600,600,300,300)
turtle.penup()
turtle.seth(-90)
turtle.fd(250)
turtle.seth(-180)
turtle.fd(150)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(0)
for i in range(90,450,90):
turtle.penup()
turtle.fd(70)
turtle.pendown()
turtle.fd(200)
turtle.penup()
turtle.fd(70)
turtle.seth(i)
六角形的绘制,利用turtle库绘制一个六角形,效果如图2.11所示
import turtle
turtle.setup(620,600,300,300)
turtle.penup()
turtle.seth(-180)
turtle.fd(250)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(30)
turtle.fd(480)
turtle.seth(-90)
turtle.fd(480)
turtle.seth(150)
turtle.fd(480)
turtle.penup()
turtle.seth(30)
turtle.fd(160)
turtle.pendown()
turtle.seth(90)
turtle.fd(160)
turtle.seth(-30)
turtle.fd(480)
turtle.seth(-150)
turtle.fd(480)
turtle.seth(90)
turtle.fd(320)
正方形螺旋线的绘制,利用turtle库绘制一个正方形螺旋线,效果如图2.12所示
只需要使用for循环不断绘制+90度和+5长度的线条就可以实现了
import turtle
turtle.setup(600,600,300,300)
turtle.pendown()
turtle.pensize(3)
turtle.pencolor("black")
turtle.seth(90)
for i in range(5,300,5):
turtle.seth(i*18)
turtle.fd(i)