2017-03-09 58 views
0

我是python初学者,当我输入这段代码时,错误显示“不能分配给文字”如何解决这个问题?不能分配给Python乌龟的文字

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

回答

1

尽管将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 
+0

非常感谢!有效 –

0

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

+0

*你不应该,但在技术上可以 – Pythogen

0

使用'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是一个字符串不是变量。要了解有关变量和字符串的更多信息,只需谷歌字符串和变量之间的区别

注意:看起来像您的代码可能有其他错误,如forward()。您可能需要拨打turtle.forward()或其他东西。而且我也认为Math.cos()以rad为参数取代deg。

+0

的'前进()'电话很好,因为海龟的通配符导入。你对度数和弧度问题是正确的。但是这只会让答案错误,让上面的代码完全不能运行的是未定义的'bodylength'。 – cdlane