《Think Python》练习 4-3:用函数画雨伞

本篇博客介绍了如何利用Python编程实现画出一个由等腰三角形组成的雨伞图形。通过分析问题,确定图形由n个等腰三角形构成,然后推导出三角形的顶角、底角以及腰长的计算方法,并提供了代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第4章 案例研究:接口设计

练习 4-3 用函数画雨伞

写一组合适的通用函数,用来画出下图所示的图形(最终代码执行效果图):
在这里插入图片描述
【求解】
不得不说,练习 4-3 比 练习 4-2 简单多了!!!
Step.1 确认组件
nnn 个等腰三角形组成“雨伞”

Step.2 抽象问题
已知:雨伞边数 nnn、雨伞边长 lll
求:等腰三角形顶角、底角

Step.3 问题求解
nnn 个顶角平分 360°360°360°2πn=360n\frac{2π}{n}=\frac{360}{n}n2π=n360
已知等腰三角形顶角 360n\frac{360}{n}n360,求底角:180−360n2\frac{180-\frac{360}{n}}{2}2180n360
已知等腰三角形底边 lll,求腰长:r=l2sinπnr=\frac{l}{2sin\frac{π}{n}}r=2sinnπl

Step.4 完成代码

"""
《Think Python》练习 4-3:通用函数画雨伞

n:雨伞的边数
l:雨伞的边长
"""

#引入数学模块、乌龟模块
import math
import turtle

#调用乌龟画图
bob = turtle.Turtle()

#雨伞
def umbrella(n,l):
    #计算雨伞中每个等边三角形的顶角(angle_in)、底角(angle_out)、腰长(r)
    angle_in = 360 / n
    angle_out = (180 - angle_in) / 2
    r = l / 2 / math.sin(angle_in / 2 / 180 * math.pi)
    #重复画等腰三角形完成雨伞
    for i in range(n):
        bob.lt(angle_in/2)
        bob.fd(r)
        bob.lt(180 - angle_out)
        bob.fd(l)
        bob.lt(180 - angle_out)
        bob.fd(r)
        bob.lt(180 - angle_in/2)

#左移240,画出5瓣雨伞
bob.pu()
bob.fd(-240)
bob.pd()
umbrella(5,115)

#右移240,画出6瓣雨伞
bob.pu()
bob.fd(240)
bob.pd()
umbrella(6,98)

#右移240,画出7瓣雨伞
bob.pu()
bob.fd(240)
bob.pd()
umbrella(7,85)

#下移120,让turtle不遮挡雨伞
bob.pu()
bob.rt(90)
bob.fd(120)

turtle.mainloop()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值