2017-01-07 3 views
0

실행하려고하면 내 코드가 "NameError : name 'L1'not defined"오류를 표시하는 이유는 무엇입니까? 변수 단계에 값 목록을 지정하려고 할 때 뭔가 빠져있는 것처럼 보입니다.NameError : name 'L1'이 정의되지 않았습니다.

steps = (L1, R3, R1, L5, L2, L5, R4, L2, R2, R2, L2, R1, L5, R3, L4, L1, L2, R3, R5, L2, R5, L1, R2, L5, R4, R2, R2, L1, L1, R1, L3, L1, R1, L3, R5, R3, R3, L4, R4, L2, L4, R1, R1, L193, R2, L1, R54, R1, L1, R71, L4, R3, R191, R3, R2, L4, R3, R2, L2, L4, L5, R4, R1, L2, L2, L3, L2, L1, R4, R1, R5, R3, L5, R3, R4, L2, R3, L1, L3, L3, L5, L1, L3, L3, L1, R3, L3, L2, R1, L3, L1, R5, R4, R3, R2, R3, L1, L2, R4, L3, R1, L1, L1, R5, R2, R4, R5, L1, L1, R1, L2, L4, R3, L1, L3, R5, R4, R3, R3, L2, R2, L1, R4, R2, L3, L4, L2, R2, R2, L4, R3, R5, L2, R2, R4, R5, L2, L3, L2, R5, L4, L2, R3, L5, R2, L1, R1, R3, R3, L5, L2, L2, R5) 
steps = steps.split(", ") 

dir = 0 
x,y = 0,0 
turn, walk = 0, 0 

for i in steps: 
    turn = i[0] 
    walk = i[1] 
    if turn == "L": 
     dir -= 1 
    elif turn == "R": 
     dir += 1 
    if dir % 4 == 0: 
     y += walk 
    elif dir % 4 == 1: 
     x += walk 
    elif dir % 4 == 3: 
     x -= walk 
    elif (dir % 4 == 2): 
     y -= walk 

final = x.abs() + y.abs() 
print(final) 
+3

및 곧. 그리고 코드가 작동해야합니다. –

+0

'.split()'단계가 있으므로 문자열이어야합니까? 'steps = "L1, R3, ... R5"'. –

답변

1

코드에는 몇 가지 문제가 있습니다. 첫 번째 문제는 steps이 문자열이어야하며 정의되지 않은 변수의 튜플이 아니어야합니다. 이 변경이 이루어지면 다른 사람에게 비틀 거릴 것입니다.

아래 코드는이 문제와 기타 발견 된 문제를 해결해야

:

steps = "L1, R3, R1, L5, L2, L5, R4, L2, R2, R2, L2, R1, L5, R3, L4, L1, L2, R3, R5, L2, R5, L1, R2, L5, R4, R2, R2, L1, L1, R1, L3, L1, R1, L3, R5, R3, R3, L4, R4, L2, L4, R1, R1, L193, R2, L1, R54, R1, L1, R71, L4, R3, R191, R3, R2, L4, R3, R2, L2, L4, L5, R4, R1, L2, L2, L3, L2, L1, R4, R1, R5, R3, L5, R3, R4, L2, R3, L1, L3, L3, L5, L1, L3, L3, L1, R3, L3, L2, R1, L3, L1, R5, R4, R3, R2, R3, L1, L2, R4, L3, R1, L1, L1, R5, R2, R4, R5, L1, L1, R1, L2, L4, R3, L1, L3, R5, R4, R3, R3, L2, R2, L1, R4, R2, L3, L4, L2, R2, R2, L4, R3, R5, L2, R2, R4, R5, L2, L3, L2, R5, L4, L2, R3, L5, R2, L1, R1, R3, R3, L5, L2, L2, R5" 
steps = steps.split(", ") 

dir = 0 
x,y = 0,0 
turn, walk = 0, 0 

for step in steps: 
    turn = step[0] 
    walk = int(step[1]) 
    if turn == "L": 
     dir -= 1 
    elif turn == "R": 
     dir += 1 
    if dir % 4 == 0: 
     y += walk 
    elif dir % 4 == 1: 
     x += walk 
    elif dir % 4 == 3: 
     x -= walk 
    elif (dir % 4 == 2): 
     y -= walk 

final = abs(x) + abs(y) 
print(final) 

출력 난 당신이``L1`에` "L1"에서 변수를 reame해야한다고 생각

11 
+0

이것이 왜 downvoted입니까? – Tagc

+1

나는 그저 생각하고 있었다. 확실히 완전한 대답이기 때문에 나는 그것을 upvoting 해요. –

관련 문제