2017-03-09 1 views
0

저는 파이썬 초보자입니다.이 코드를 입력하면 "리터럴에 할당 할 수 없습니다"라는 오류 메시지가 나타납니다. 어떻게 해결합니까?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)입니다. 문자열 리터럴을 다른 것과 동일하게 설정할 수 없습니다. 변수로 사용하려는 경우 주위에서 따옴표를 제거해야합니다. 또한 함수와 동일한 이름의 변수를 사용하지 않아야합니다. 단지 triangle

그래서 코드는 다음과 같이됩니다 'triangle' 사용을 사용

+0

을 * * 당신은 안하지만, 기술적으로는'앞으로 – Pythogen

0

intead :

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'문자열하지 않는 변수 때문에이 작업을 수행해야합니다. 변수와 문자열에 대해 자세히 알아 보려면 문자열과 변수의 차이점을 알려주십시오.

참고 : forward()과 같은 다른 오류가있는 것처럼 보입니다. turtle.forward() 또는 그 밖의 번호로 문의해야 할 수도 있습니다. 그리고 나는 또한 Math.cos()이 매개 변수 대신에 deg가 아니라 rad를 취한다고 생각합니다.

+0

수 있습니다()'호출은 거북이의 와일드 카드 가져 오기 때문에 정상입니다. 각도 대 라디안 문제가 맞습니다. 그러나 그것은 단지 답을 잘못 만든다. 위 코드가 전혀 실행되지 않게하는 것은 정의되지 않은'bodylength'이다. – cdlane

관련 문제