py上机第一次实验1实验2 2025/4/18

Python上机实验:温度转换与图形绘制

实验1 温度转换与输入输出强化(2 学时)

知识点:input()/print()、分支语句、字符串处理(教材2.1-2.2)
实验任务:
1. 实现摄氏温度与华氏温度互转(保留两位小数)
2. 扩展功能:输入错误处理(如非数字输入提示重新输入)
3. 扩展:支持开尔文温度的三向转换

程序思路:输入一个数字选择对应温度转换,并实现对应温度转换,如果输入未包含的数字会直接报错重新输入

实验2:turtle 库绘制进阶图形(2 学时)

知识点:turtle 库坐标控制、循环结构、函数封装(教材2.3-2.4)
实验任务 :
1. 绘制嵌套彩色五角星(大小逐层递减)
2. 设计函数绘制自定义正多边形(边数与颜色参数化)
3. 扩展:实现动态旋转花瓣图案。

实验一.

while True:
    try:
        print("请输入转化类型:")
        print("0.退出程序")
        print("1.摄氏度转华氏度")
        print("2.摄氏度转开尔文")
        print("3.华氏度转摄氏度")
        print("4.华氏度转开尔文")
        print("5.开尔文转摄氏度")
        print("6.开尔文转华氏度")
        choice = int(input())

        if 0 <= choice <= 6:
            temperature = float(input("请输入温度值:"))
            if choice == 0:
                break
            elif choice == 1:
                result = temperature * 1.8 + 32
                print(f"{temperature} 摄氏度等于 {result:.2f} 华氏度")
            elif choice == 2:
                result = temperature + 273.15
                print(f"{temperature} 摄氏度等于 {result:.2f} 开尔文")
            elif choice == 3:
                result = (temperature - 32) / 1.8
                print(f"{temperature} 华氏度等于 {result:.2f} 摄氏度")
            elif choice == 4:
                result = (temperature - 32) / 1.8 + 273.15
                print(f"{temperature} 华氏度等于 {result:.2f} 开尔文")
            elif choice == 5:
                result = temperature - 273.15
                print(f"{temperature} 开尔文等于 {result:.2f} 摄氏度")
            elif choice == 6:
                result = (temperature - 273.15) * 1.8 + 32
                print(f"{temperature} 开尔文等于 {result:.2f} 华氏度")
        else:
            print("无效的选择,请输入 1 - 6 之间的数字。")
    except ValueError:
        print("输入无效,请输入有效的数字。")

实验二

import turtle


# 设置画布和画笔
def setup_turtle():
    turtle.setup(800, 800)  # 设置画布大小
    turtle.speed(0)  # 设置画笔速度(最快)
    turtle.bgcolor("white")  # 设置背景颜色
    turtle.penup()  # 提起画笔,避免初始移动时绘制
    turtle.hideturtle()  # 隐藏画笔


# 绘制单个五角星
def draw_star(size, color):
    turtle.color(color)  # 设置画笔颜色
    turtle.begin_fill()  # 开始填充颜色
    for _ in range(5):  # 五角星有 5 条边
        turtle.forward(size)  # 向前移动 size 距离
        turtle.right(144)  # 右转 144 度(五角星的内角)
    turtle.end_fill()  # 结束填充颜色


# 绘制嵌套五角星
def draw_nested_stars(start_size, num_layers, colors):
    """
    绘制嵌套彩色五角星
    :param start_size: 外层五角星的初始大小
    :param num_layers: 嵌套的层数
    :param colors: 每层五角星的颜色列表
    """
    for layer in range(num_layers):
        size = start_size * (0.8 ** layer)  # 每层大小递减 80%
        color = colors[layer % len(colors)]  # 循环使用颜色列表
        draw_centered_star(size, color)  # 绘制五角星


# 绘制居中的五角星
def draw_centered_star(size, color):
    """
    绘制一个居中的五角星
    :param size: 五角星的大小
    :param color: 五角星的颜色
    """
    # 计算五角星的起始位置(确保五角星居中)
    start_x = turtle.xcor()  # 当前画笔的 x 坐标
    start_y = turtle.ycor()  # 当前画笔的 y 坐标
    offset = size / 2.6  # 五角星的中心偏移量(经验值)

    # 移动到新的起始位置(居中)
    turtle.penup()
    turtle.goto(start_x, start_y - offset)  # 移动到五角星的顶点位置
    turtle.pendown()

    # 绘制五角星
    draw_star(size, color)

    # 返回到原来的位置
    turtle.penup()
    turtle.goto(start_x, start_y)  # 回到原来的位置
    turtle.pendown()


# 主函数
def main():
    setup_turtle()  # 初始化画布和画笔

    # 设置初始参数
    start_size = 200  # 外层五角星的初始大小
    num_layers = 5  # 嵌套的层数
    colors = ["red", "orange", "yellow", "green", "blue"]  # 颜色列表

    # 移动到画布中心
    turtle.penup()
    turtle.goto(0, -start_size / 2.6)  # 调整到画布中心
    turtle.pendown()

    # 绘制嵌套五角星
    draw_nested_stars(start_size, num_layers, colors)

    # 结束绘制
    turtle.done()


# 运行主函数
if __name__ == "__main__":
    main()

import turtle


def draw_polygon(sides=6, size=100, color="blue"):
    """绘制自定义正多边形

    参数:
        sides: 边数 (至少3)
        size: 边长
        color: 填充颜色
    """
    if sides < 3:
        sides = 3  # 至少三角形

    angle = 360 / sides
    turtle.color(color)
    turtle.begin_fill()
    for _ in range(sides):
        turtle.forward(size)
        turtle.right(angle)
    turtle.end_fill()


# 测试不同多边形
turtle.Screen().bgcolor("white")
turtle.speed(0)

# 绘制六边形
turtle.penup()
turtle.goto(-200, 0)
turtle.pendown()
draw_polygon(6, 80, "red")

# 绘制五边形
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
draw_polygon(5, 80, "blue")

# 绘制八边形
turtle.penup()
turtle.goto(200, 0)
turtle.pendown()
draw_polygon(8, 80, "green")

turtle.done()

import turtle
import time

# 设置画布和画笔
def setup_turtle():
    turtle.setup(800, 800)  # 设置画布大小
    turtle.speed(0)         # 设置画笔速度(最快)
    turtle.bgcolor("black") # 设置背景颜色为黑色
    turtle.hideturtle()     # 隐藏画笔
    turtle.tracer(0, 0)     # 关闭自动刷新,手动刷新以提高性能

# 绘制单个花瓣
def draw_petal(radius, color):
    """
    绘制单个花瓣
    :param radius: 花瓣的半径
    :param color: 花瓣的颜色
    """
    turtle.color(color)
    turtle.begin_fill()
    turtle.circle(radius, 60)  # 绘制 60 度的圆弧
    turtle.left(120)           # 左转 120 度
    turtle.circle(radius, 60)  # 绘制另一个 60 度的圆弧
    turtle.end_fill()

# 绘制动旋转的花瓣图案
def draw_rotating_petals():
    """
    绘制定值的花瓣图案并动态旋转
    """
    num_petals = 8  # 花瓣数量
    radius = 100    # 花瓣半径
    color = "pink"  # 花瓣颜色
    rotation_speed = 5  # 每次旋转的角度
    delay = 0.05      # 动画延迟时间

    for _ in range(360 // rotation_speed):  # 每次旋转 rotation_speed 度,共旋转 360 度
        turtle.penup()
        turtle.goto(0, 0)  # 回到中心点
        turtle.setheading(_ * rotation_speed)  # 设置当前旋转角度
        turtle.pendown()

        # 绘制花瓣
        for _ in range(num_petals):
            draw_petal(radius, color)
            turtle.left(360 / num_petals)  # 转向下一个花瓣的位置

        turtle.update()  # 手动刷新画布
        time.sleep(delay)  # 添加延迟,控制动画速度

# 主函数
def main():
    setup_turtle()  # 初始化画布和画笔
    draw_rotating_petals()  # 绘制动旋转的花瓣图案
    turtle.done()  # 结束绘制

# 运行主函数
if __name__ == "__main__":
    main()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值