第二章 Python程序实例解析
文章目录
- 2.1 温度转换
- 2.2 汇率兑换
- 2.3 绘制彩色蟒蛇
- 2.4 等边三角形的绘制
- 2.5 叠加等边三角形的绘制
- 2.6 无角正方形的绘制
- 2.7 六边形的绘制
- 2.8 正方形螺旋线绘制
- 2.9 自定义蟒蛇绘制
2.1 温度转换
tem = int(input("请选择温度的单位(华氏度为1,摄氏度为2):"))
TempStr = eval(input("请输入温度值:"))
if tem == 1:
C = (TempStr - 32) / 1.8 # 计算摄氏度
print("转换后的温度是{:.0f}C".format(C))
elif tem == 2:
F = 1.8 * TempStr + 32 # 计算华氏度
print("转换后的温度是{:.0f}F".format(F))
else:
print("输入错误!")
2.2 汇率兑换
try:
money = input("请输入金额(如:1¥/1$):")
if money[-1] in ['$']:
rmb = eval(money[0:-1]) * 6
print("{}->>{}¥".format(money, rmb))
elif money[-1] in ['¥']:
dollar = eval(money[0:-1]) / 6
print("{}->>{}$".format(money, dollar))
except:
print("输入错误!")
优化:
try:
money = input("请输入金额(如:1¥/1$):")
currency = money[-1]
amount = eval(money[0:-1])
if currency == '$':
rmb = amount * 6
print("{}->>{}¥".format(money, rmb))
elif currency == '¥':
dollar = amount / 6
print("{}->>{}$".format(money, dollar))
else:
print("输入格式错误!")
except:
print("输入错误!")
优化的主要改动:
- 将货币符号和金额分离出来,使代码更加清晰易读。
- 将条件判断改为根据货币符号进行判断,避免重复判断。
2.3 绘制彩色蟒蛇
import turtle
# 设置画布大小和位置
turtle.setup(650, 350, 200, 200)
# 抬起画笔,移动到起始位置
turtle.penup()
turtle.fd(-250)
# 落下画笔,设置画笔宽度和颜色,调整方向
turtle.pendown()
turtle.pensize(25)
turtle.seth(-40)
# 循环绘制蟒蛇的每一段
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']
for i in range(4):
turtle.pencolor(colors[i % len(colors)]) # 设置画笔颜色
turtle.circle(40, 80) # 绘制大圆弧
turtle.circle(-40, 80) # 绘制小圆弧
# 绘制蟒蛇头部
turtle.pencolor(colors[4 % len(colors)]) # 设置画笔颜色
turtle.circle(40, 80 / 2) # 绘制半个大圆弧
turtle.fd(40) # 前进一段距离
turtle.circle(16, 180) # 绘制半个小圆弧
turtle.fd(40 * 2 / 3) # 前进一段距离
# 关闭窗口
turtle.done()
2.4 等边三角形的绘制
- 代码一:
import turtle
turtle.forward(100) # 向前走100个像素
turtle.left(120) # 左转120度
turtle.forward(100)
turtle.left(120)
turtle.forward(100)
turtle.done() # 结束绘制,显示图形
- 代码二:
import turtle
# 创建turtle对象
t = turtle.Turtle()
# 设置画笔的粗细和颜色
t.pensize(3)
t.pencolor("blue")
# 绘制等边三角形
for i in range(3):
t.forward(100) # 前进100像素
t.left(120) # 左转120度
# 结束绘画
turtle.done()
2.5 叠加等边三角形的绘制
# 导入 turtle 库的所有函数
from turtle import *
# 向前移动 100 像素
fd(100)
# 逆时针旋转 120 度,再向前移动 100 像素
seth(-120)
fd(100)
# 逆时针旋转 120 度,再向前移动 100 像素
seth(120)
fd(100)
# 逆时针旋转 60 度,再向前移动 100 像素
seth(60)
fd(100)
# 逆时针旋转 60 度,再向前移动 200 像素
seth(-60)
fd(200)
# 逆时针旋转 180 度,再向前移动 200 像素
seth(-180)
fd(200)
# 逆时针旋转 60 度,再向前移动 100 像素
seth(60)
fd(100)
done()
2.6 无角正方形的绘制
from turtle import *
# 设置画布大小为 500*500
setup(500, 500)
for i in range(4):
# 提笔,向前移动20像素
up()
fd(20)
# 下笔,向前移动160像素
pd()
fd(160)
# 提笔,向前移动20像素
up()
fd(20)
# 向右旋转90度
right(90)
done()
2.7 六边形的绘制
from turtle import *
# 将画笔抬起,移动到起始位置,再将画笔放下
up()
setpos(-150, 20)
down()
# 旋转画笔方向,开始画第一个等边三角形
left(30)
fd(100)
left(60)
for i in range(5):
fd(100)
right(120)
fd(100)
left(60)
# 画出最后一个等边三角形和最后的线段
fd(100)
right(120)
fd(100)
for n in range(6):
fd(100)
right(60)
done()
2.8 正方形螺旋线绘制
import turtle
# 设置初始值
length = 5
angle = 90
increment = 2
# 创建画布
turtle.setup(600, 600)
# 创建画笔
pen = turtle.Pen()
pen.speed(0)
# 绘制正方形螺旋线
for i in range(100):
pen.forward(length)
pen.left(angle)
length += increment
turtle.done()
2.9 自定义蟒蛇绘制
from turtle import *
# 设置画布大小和颜色模式
setup(800, 800)
colormode(255)
# 设置画笔大小和速度
pensize(20)
speed(10)
def draw_snake():
# 抬起画笔,设置初始位置为屏幕中心,放下画笔
penup()
setpos(0, 0)
pendown()
# 绘制蟒蛇
for i in range(50):
forward(2 * i) # 前进距离随着i的增加而增加
left(20) # 左转20度
# 随着绘制的进度改变颜色
pencolor((255 - i, 50, i))
hideturtle() # 隐藏画笔
draw_snake() # 调用函数绘制蟒蛇
done() # 保持窗口不关闭,直到手动关闭