温度转换与输入输出强化和turtle库绘制进阶图形
实验1温度转换与输入输出强化(2学时)
知识点:input0/print()、分支语句、字符串处理(教材 2.1-2.2)
实验任务:
1.实现摄氏温度与华氏温度互转(保留两位小数)
2.扩展功能:输入错误处理(如非数字输入提示重新输入)
3、扩展:支持开尔文温度的三向转换
`def temperature_converter():
print("温度转换器")
print("1. 摄氏温度 → 华氏温度")
print("2. 华氏温度 → 摄氏温度")
print("3. 摄氏温度 → 开尔文温度")
print("4. 开尔文温度 → 摄氏温度")
print("5. 华氏温度 → 开尔文温度")
print("6. 开尔文温度 → 华氏温度")
print("0. 退出程序")
while True:
try:
choice = input("请选择转换类型(0-6): ")
if choice == '0':
print("程序已退出")
return
if choice not in ['1', '2', '3', '4', '5', '6']:
print("错误: 请输入0-6之间的数字")
continue
while True:
try:
temp_str = input("请输入温度值: ")
temp = float(temp_str)
break
except ValueError:
print("错误: 请输入有效的数字温度值")
if choice == '1':
# 摄氏 → 华氏
fahrenheit = (temp * 9 / 5) + 32
print(f"{temp:.2f}°C = {fahrenheit:.2f}°F")
elif choice == '2':
# 华氏 → 摄氏
celsius = (temp - 32) * 5 / 9
print(f"{temp:.2f}°F = {celsius:.2f}°C")
elif choice == '3':
# 摄氏 → 开尔文
kelvin = temp + 273.15
print(f"{temp:.2f}°C = {kelvin:.2f}K")
elif choice == '4':
# 开尔文 → 摄氏
celsius = temp - 273.15
print(f"{temp:.2f}K = {celsius:.2f}°C")
elif choice == '5':
# 华氏 → 开尔文
kelvin = (temp - 32) * 5 / 9 + 273.15
print(f"{temp:.2f}°F = {kelvin:.2f}K")
elif choice == '6':
# 开尔文 → 华氏
fahrenheit = (temp - 273.15) * 9 / 5 + 32
print(f"{temp:.2f}K = {fahrenheit:.2f}°F")
except Exception as e:
print(f"发生错误: {e}")
if name == "main":
temperature_converter()`

实验2:turtle库绘制进阶图形(2学时)
知识点:turtle 库坐标控制、循环结构、函数封装(教材 2.3-2.4)
实验任务:
1.绘制嵌套彩色五角星(大小逐层递减)
2.设计函数绘制自定义正多边形(边数与颜色参数化)
3.扩展:实现动态旋转花瓣图案。
所有实验代码截图及结果内容均记录在博客地址上,做好目录管理
`
import time
import turtle
import random
import colorsys
def setup():
"""初始化设置"""
turtle.speed(0)
turtle.bgcolor("black")
turtle.title("Turtle 图形绘制")
turtle.colormode(255)
turtle.hideturtle()
turtle.tracer(0, 0) # 禁用自动刷新,手动控制屏幕更新
def draw_nested_stars(t, size=200, layers=5, shrink_factor=0.7):
"""绘制嵌套彩色五角星"""
for i in range(layers):
hue = 0.12 + i * 0.02
r, g, b = colorsys.hsv_to_rgb(hue, 0.8, 0.9 + i * 0.02)
t.color(int(r * 255), int(g * 200), int(b * 50))
start_pos = t.pos()
start_heading = t.heading()
draw_star(t, size * (shrink_factor ** i))
t.penup()
t.goto(start_pos)
t.setheading(start_heading)
t.pendown()
def draw_star(t, size):
"""绘制五角星"""
t.begin_fill()
for _ in range(5):
t.forward(size)
t.right(144)
t.end_fill()
def draw_regular_polygon(t, sides=6, size=100, color=None):
"""绘制正多边形"""
if color is None:
colors = [(255, 179, 186), (255, 223, 186), (255, 255, 186),
(186, 255, 201), (186, 225, 255), (220, 208, 255)]
color = random.choice(colors)
t.color(color)
angle = 360 / sides
t.begin_fill()
for _ in range(sides):
t.forward(size)
t.right(angle)
t.end_fill()
def draw_rotating_flower(t, colors):
"""绘制并旋转花瓣图案"""
petals = 12
angle = 360 / petals
for i in range(petals):
r, g, b = hex_to_rgb(colors[i % len(colors)])
t.color(r, g, b)
t.begin_fill()
t.circle(60, 60)
t.left(120)
t.circle(60, 60)
t.left(120)
t.end_fill()
t.right(angle)
def hex_to_rgb(hex_color):
"""将十六进制颜色转换为RGB"""
hex_color = hex_color.lstrip('#')
return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
def animate_flower(t, colors, speed=5):
"""动画函数,用于旋转花瓣图案"""
for _ in range(36): # 旋转36次,每次10度
t.clear() # 清除之前的绘制
draw_rotating_flower(t, colors)
t.right(speed) # 旋转指定角度
turtle.update() # 手动更新屏幕显示
time.sleep(0.1) # 控制动画速度
def main():
"""主函数,负责组织和调用各个绘图函数"""
setup()
star_t = turtle.Turtle()
star_t.speed(0)
star_t.hideturtle()
poly_t = turtle.Turtle()
poly_t.speed(0)
poly_t.hideturtle()
flower_t = turtle.Turtle()
flower_t.speed(0)
flower_t.hideturtle()
star_t.penup()
star_t.goto(-380, 200)
star_t.pendown()
draw_nested_stars(star_t, layers=7, shrink_factor=0.75)
colors = [(255, 179, 186), (255, 223, 186), (255, 255, 186),
(186, 255, 201), (186, 225, 255), (220, 208, 255)]
positions = [(100, 200), (250, 200), (400, 200)]
for i, pos in enumerate(positions):
poly_t.penup()
poly_t.goto(pos)
poly_t.pendown()
draw_regular_polygon(poly_t, sides=5 + i * 2, size=40 + i * 10, color=colors[i])
flower_t.penup()
flower_t.goto(-200, -200)
flower_t.pendown()
flower_colors = ["#FF6B6B", "#FFA3A3", "#FFD166", "#06D6A0", "#118AB2", "#8338EC"]
animate_flower(flower_t, flower_colors)
flower_t.penup()
flower_t.goto(200, -200)
flower_t.pendown()
animate_flower(flower_t, flower_colors)
turtle.done()
if name == "main":
main()


浙公网安备 33010602011771号