2012-06-02 2 views
2

제 질문이 정말로 구체적이지 않거나 제목이 오도 된 것이라면 미안합니다. 파이썬 2.7에서 게임을 만들려고 노력했습니다. 지금까지 모든 것이 잘되고 있지만 한 가지 문제가 있습니다. 구문 오류가 발생하고이를 해결하는 방법을 모르겠습니다. 오류 메시지 : "프로그램에 오류가 있습니다 : * 리터럴 (텍스트 game.py, 28 행)에 할당 할 수 없습니다." 이 줄에서 'n'은 1의 값을 할당하려고합니다. 나는 따옴표와 작은 따옴표하지만 어떤 도움이나 조언은 감사도 작업 밖으로 그것을 시도했습니다이 코드의 문제점은 무엇입니까? (Python, syntax error)

print """ 
--------------------------------------------- 
|           | 
|  TEXT GAME: THE BEGINNING!    | 
|           | 
--------------------------------------------- 
""" 
print "What is your name adventurer?" 
adv_name = raw_input("Please enter a name: ") 
print "Welcome " + adv_name + ", I am called Colosso. I am the great hero of the town Isern. \nWhile I was protecting the surrounding forests I was attacked and killed. \nNow I am nothing but a mere spirit stuck in the realm of Life. \nI am here because I swore to slay the corrupt great king Blupri. \nBlupri still lives therefore I cannot travel to the realm of Death. \nI need you to slay him and his minions so I may rest in peace" 
print """Do you want to help Colosso?: 
1.) Yes (Start playing) 
2.) No (Quit) 
""" 
dside = input("Please enter a number to decide: ") 
if dside == 2: 
    print "I knew you were a coward..." 
    raw_input('Press Enter to exit') 
elif dside == 1: 
    print "Great! Let's get this adventure started" 
    raw_input('Press Enter to continue') 
print """This is the tutorial level, here is where you will learn how to play. 
To move the letter of a direction, n is north, e is east, s is south, w is west. 
Press the '<' key to move up and the '>' key to move down. 
Try it! 
""" 
move = raw_input('Where would you like to go?: ') 
"n" = 1 
"e" = 2 
"s" = 3 
"w" = 4 
"<" = 5 
">" = 6 
if move == 1: 
    print "You move north." 
if move == 2: 
    print "You move east." 
if move == 3: 
    print "You move south." 
if move == 4: 
    print "You move west." 
print move 

: 여기에 코드입니다.

+0

오류는 ""literal "= value"이 수행되고 있음을 의미합니다. 이것은 허용되지 않으며'42 = 0'보다 더 이상 이해가되지 않습니다. 42는 42가 아니며 0이 아닙니다. 마찬가지로 "리터럴"은 "리터럴"이며 다른 값은 아닙니다. –

답변

1

"n"은 파이썬에서 문자열 리터럴로 해석합니다. 즉, 문자열 자체가 값이고 다른 값에 값을 할당 할 수 없습니다. =의 왼쪽에있는 토큰은 변수 여야합니다.

28 행에서 n 주위의 큰 따옴표를 제거하는 것이 좋습니다. 파이썬 코더가 아니라 본능적으로 할 일입니다.

+0

감사합니다. Rob! 그 작품, 내가 처음으로 그들을 제거했을 때 오류를 잘못 읽었어야합니다. 도움에 정말 실망 스러웠습니다. 고마워. – user1432812

+1

정말 기쁩니다! 새로운 언어에 대한 질문에 대답하는 것은 재미 있습니다. 나는 이제 파이썬 경험이 더 많은 것으로 보이는 레프에게 당신을 넘깁니다 ;-) 나는 당신의 코드로 파이썬을 설치하려고합니다. 질문 해 주셔서 감사합니다. –

+1

@ user1432812 (가장) 도움이되는 답변의 왼쪽에있는 체크 표시를 선택하는 것이 좋습니다. 이렇게하면 질문이 해결되었음을 나타내며 응답을 게시 한 사람에게는 보상을 제공합니다. 서두를 필요는 없지만 나중에 할 수 있습니다. –

2

Rob is right 그리고 코드의 다음 줄은별로 의미가 없습니다.

내가 좋을 것 그냥 :

move = raw_input('Where would you like to go?: ') 

if move == 'n': 
    print "You move north." 
elif move == 'e': 
    print "You move east." 
elif move == 's': 
    print "You move south." 
elif move == 'w': 
    print "You move west." 

아니면 정말 어떤 이유로 번호의 입력을 매핑 할 경우, 사전 만드는 것이 좋습니다 :

directions = {"n": 1, "e": 2, "s": 3, "w": 4, "<": 5, ">": 6} 

그런 다음 당신이 할 수 있습니다 :

if directions[move] == 1: 
    # etc 
+1

첫 번째'if ...'다음에'else if'를 사용하면 이전 조건이 모두 실패한 경우에만 조건을 검사하므로 더 빠릅니다. – C0deH4cker

+0

@ C0deH4cker 매우 사실, 나는 복사 및 붙여 넣기하는 동안 그것을 알아 차리지 못했습니다. 지금 답변을 업데이트 중입니다. –

+0

Oh duh, elif. 하루 종일 (c, cpp, objc, php, java) lang 사이를 전환 해 왔으며 python 만 elif를 사용합니다. 파이썬이 제 최고의 언어이기 때문에 이것을 기억해야했습니다. – C0deH4cker

관련 문제