如何解决如何让海龟函数计算绘制的总长度值?
所以我需要我的海龟在用户点击屏幕的地方绘制任何正多边形 并打印出他们绘制的多边形的总长度。
import turtle
t=turtle.Turtle()
tlength=0
def figure(num,length):
for i in range(num):
t.forward(length)
t.left(360/num)
global tlength
tlength = tlength+length
def drawit(x,y):
shape = int(turtle.textinput("","What Shape?"))
if shape!="0":
length = int(turtle.textinput("","The length of side? "))
t.penup()
t.goto(x,y)
t.pendown()
figure(shape,length)
t.write("total drawn length=",tlength)
s = turtle.Screen()
s.onscreenclick(drawit)
这是我目前所拥有的。它运行良好,但不会打印出总长度。有什么建议吗?
解决方法
您有一些代码问题:
t.write("total drawn length=",tlength)
这不会起作用,因为 write()
不需要显示多个参数,而只需要一个。检查文档。
shape = int(...)
if shape != "0":
您只是将 shape
强制为 int
,然后测试它是否不是字符串 - 这将始终为真。此外,如果用户点击“取消”并且 int()
返回 textinput()
,None
调用将失败。
tlength=0
这只会初始化一次,因此任何后续多边形都会将前一个多边形的周长添加到它们的总长度中。
这是您的程序的返工,它修复了上述大部分问题并且基本有效:
from turtle import Screen,Turtle
def figure(sides,length):
perimeter = 0
for _ in range(sides):
turtle.forward(length)
perimeter += length
turtle.left(360 / sides)
return perimeter
def drawit(x,y):
shape = screen.textinput("","How many sides?")
if not shape:
return
length = screen.textinput("","The length of one side?")
if not length:
return
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
total_length = figure(int(shape),int(length))
turtle.write("Total drawn length = " + str(total_length))
turtle = Turtle()
turtle.hideturtle()
screen = Screen()
screen.onscreenclick(drawit)
screen.mainloop()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。