微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让海龟函数计算绘制的总长度值?

如何解决如何让海龟函数计算绘制的总长度值?

所以我需要我的海龟在用户点击屏幕的地方绘制任何正多边形 并打印出他们绘制的多边形的总长度。

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 举报,一经查实,本站将立刻删除。