thinkpython 练习题4.3

这篇博客介绍了如何使用swampy.TurtleWorld模块在Python中绘制圆弧。首先导入必要的模块,然后展示了两种方法。第一种方法适用于角度为360度整数倍的情况,通过调整边长和角度来逼近圆弧。第二种方法有待优化,博主期待社区提供更好的解决方案。

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

#先要导入模块swampy.TurtleWorld等等,可以参考我的另一篇文章


#题1

from swampy.TurtleWorld import*



world=TurtleWorld()
bob=Turtle()
print bob


'''fd(bob,100)
lt(bob)
fd(bob,100)
lt(bob)
fd(bob,100)
lt(bob)
fd(bob,100)'''
#替代为
for i in range(4):
    fd(bob,100)
    lt(bob)
    
wait_for_user()




#题2

from swampy.TurtleWorld import*



def square(t,length):
    for i in range(4):
        fd(t,length)
        lt(t)
    
world=TurtleWorld()
bob=Turtle()
l=input("length=")
square(bob,l)
wait_for_user()



#题3、4
from swampy.TurtleWorld import*


def polygon(t,n):
    for i in range(n):
        fd(t,500/n)     #边长500/n
        lt(t,360.0/n)   #360.0取float型是为了n的取值可以更多,不信可以试试,若还是360,polygon(bob,100)里的第二个参数数只能是360的整数
    
world=TurtleWorld()
bob=Turtle()
bob.delay=0.01          #每次行动之间的停顿0.01s
polygon(bob,100)        #当 lt(t,360/n) 改变100的值可以将图形近似变为圆,该数只能是360的整数

wait_for_user()

#题5

#方案一:只适用于角度可以为360的整除的数,如1,2,3,4,6,9...................

from swampy.TurtleWorld import*


def arc(t,n,angle):
    for i in range(int(n/(360.0/angle))):         #  仅是改变循环的终止条件,但局限于i是整数,但误差会随着n的增大而减小
        fd(t,500/n)     #边长500/n
        lt(t,360.0/n)
    
world=TurtleWorld()
bob=Turtle()
bob.delay=0.01          #每次行动之间的停顿0.01s
arc(bob,100,90)         
wait_for_user()

#方案优:

小弟抛砖引玉,希望各位大侠能给个更优解,先谢过了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值