Python 如何让turtle函数计算绘制的总长度值?

Python 如何让turtle函数计算绘制的总长度值?,python,python-3.x,turtle-graphics,python-turtle,Python,Python 3.x,Turtle Graphics,Python Turtle,所以我需要我的乌龟在屏幕上点击的地方画出用户想要的任何正多边形 并打印出他们绘制的多边形的总长度 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+le

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

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
,然后测试它是否不是字符串——这将始终是正确的。此外,如果用户点击“取消”并且
textinput()
返回
None
,则
int()
调用将失败

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()

你能修改你的代码格式吗?否则很难理解您的代码。为什么不使用
t.xcor()