第二章 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 turtleturtle.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*500setup(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 = 5angle = 90increment = 2# 创建画布turtle.setup(600, 600)# 创建画笔pen = turtle.Pen()pen.speed(0)# 绘制正方形螺旋线for i in range(100): pen.forward(length) pen.left(angle) length += incrementturtle.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() # 保持窗口不关闭,直到手动关闭