实验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()

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

被折叠的 条评论
为什么被折叠?



