2017-01-07 18 views
0

私のコードが "NameError:name 'L1'が定義されていません"というエラーが表示されるのはなぜですか?変数のステップに値のリストを割り当てようとすると、何かが欠けているようです。NameError:名前 '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は文字列で、未定義変数のタプルではないことです。この変更が行われると、あなたは他の人につまずくでしょう。

次のコードは、この問題および他の発見の問題を解決する必要があります:私はあなたが ` "L1"`にL1` `から、あなたの変数をreameべきだと思い

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) 

出力

11 
+0

なぜこれがダウン表示されているのか尋ねることはできますか? – Tagc

+1

私はちょうどそれを考えていた。間違いなく完全な答えなので、私はそれを上書きしています。 –

関連する問題