无法分配给 Python 乌龟中的文字

Can't assign to literal in Python turtle

我是 python 初学者,当我输入这段代码时,错误提示 "can't assign to literal" 我该如何解决这个问题?

from turtle import*
from math import*
def triangle(): 
   triangle=(int(bodylength))/5*3/2/cos(70)
   penup()
   forward(int(bodylength)/5)
   pendown()
   left(70)
   forward(int('triangle'))
   right(140)
   forward(int('triangle'))
   forward(int(bodylength)/5)
triangle()

问题是你的陈述 'triangle'=(int(bodylength))/5*3/2/cos(70)。您不能将字符串文字设置为等于其他内容。如果你想让它成为一个变量,你需要从它周围删除引号。另外,你不应该有一个与函数同名的变量。

不使用 'triangle',只使用 triangle

因此您的代码将如下所示:

from turtle import*
from math import*
def triangle(): 
   triangle=(int(bodylength))/5*3/2/cos(70)
   penup()
   forward(int(bodylength)/5)
   pendown()
   left(70)
   forward(int(triangle))
   right(140)
   forward(int(triangle))
   forward(int(bodylength)/5)
triangle()

您需要这样做,因为 'triangle' 到 python 是 String 而不是 variable。要了解有关变量和字符串的更多信息,只需 google 字符串和变量之间的区别

注意:看起来您的代码可能还有其他错误,例如 forward()。您可能需要调用 turtle.forward() 或其他方式。而且我还认为 Math.cos() 参数采用 rad 而不是 deg。

尽管将 forward(int('triangle')) 更改为 forward(int(triangle)) 是必要的,但还不够,因为 bodylength 未定义。让我们对其进行修改以使代码更清晰 运行:

from turtle import Turtle, Screen
import math

def triangle(turtle, bodylength):
    distance = bodylength / 5 * 3 / 2 / math.cos(math.radians(70))
    turtle.penup()
    turtle.forward(bodylength / 5)
    turtle.pendown()
    turtle.left(70)
    turtle.forward(distance)
    turtle.right(140)
    turtle.forward(distance)
    turtle.forward(bodylength / 5)

screen = Screen()

yertle = Turtle()

triangle(yertle, int(input("Body length: ")))

screen.exitonclick()  # depending on the environment, you may not need this