2017-03-09 56 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