第二章 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()  # 保持窗口不关闭,直到手动关闭