2013-06-21 1 views
2

특정 프롬프트에 응답하여 사람이 입력하는 모든 것을 할당하는 프로그램을 만들려고합니다. 두 줄 이상을 차지하고 두려워요. 별도의 줄에 있기 때문에 문자열을 인식하지 못합니다. 그것은 "잘못된 구문"오류와 함께 팝업 계속하고 아래 라인을 가리키고 유지합니다. 어떤 식 으로든이 문제를 해결할 수 있습니까?한 줄 이상을 차지하는 문자열 구문이 잘못되었습니다. Python

given = raw_input("Is " + str(ans) + " your number? 
Enter 'h' to indicate the guess is too high. 
Enter 'l' to indicate the guess is too low. 
Enter 'c' to indicate that I guessed correctly") 

답변

6

multi-line strings 또는 괄호를 사용하여 파이썬 소스 코드로 문자열을 래핑해야합니다. 당신의 문자열이 이미 괄호 안에 있기 때문에, 나는 그 사실을 사용할 것입니다. 그들이 괄호 내에서 서로 옆에 표시하면 인터프리터는 자동으로 함께 문자열에 가입 할 것이다, 그래서 당신은 다음과 같은 코드를 다시 작성할 수 있습니다 : 그 문자열의 각 사이에 +이 있었다 것처럼이 훨씬 처리

given = raw_input("Is " + str(ans) + " your number?" 
        "Enter 'h' to indicate the guess is too high. " 
        "Enter 'l'to indicate the guess is too low. " 
        "Enter 'b' to indicate that I guessed correctly") 

. 당신은 또한 당신 자신의 plusses를 쓸 수 있지만, 그것은 필요하지 않습니다.

위에서 언급했듯이 삼중 인용 문자열 (''' 또는 """)을 사용하여이를 수행 할 수도 있습니다. 그러나 이것은 (내 의견으로는) 기본적으로 코드가 들썩 들썩 해 보이게한다. 왜냐하면 들여 쓰기와 개조가 부과되기 때문이다. 나는 괄호를 사용하는 것을 선호한다.

+0

감사합니다! 그게 아주 도움이 되네, 내 프로그램이 잘 됐어! – TrigonDark

+0

@ user2510460 문제가 해결되면 헨리의 대답을 받아 들여야합니다! :) – 2rs2ts

-1

트리플 인용 문자열을 사용할 수도 있습니다. 시작과 끝은 """이며 여러 줄에 걸쳐있을 수 있습니다.

+2

트리플 인용은 약간의 귀찮은 [들여 쓰기 문제]를 일으킬 수 있습니다. (http://stackoverflow.com/q/1412374/1014938); 언급 할 답변을 확장하는 것이 좋습니다. –

1

나는 여러 줄 문자열을 사용하는 것입니다,하지만 당신은 또한 다음과 같은 옵션이 있습니다

>>> print "Hello world, how are you? \ 
... Foo bar!" 
Hello world, how are you? Foo bar! 

백 슬래시는 이전의 연속으로 다음 줄을 치료하는 인터프리터를 알 수 있습니다. 당신이 당신의 코드 블록이 어떻게 보이는지 신경 경우에, 당신은 +에 추가 할 수 있습니다 :

>>> print "Hello world, how are you? " + \ 
...  "Foo bar!" 
Hello world, how are you? Foo bar! 

편집가 : @moooeeeep가 언급 한 바와 같이,이 문장의 끝에 개행 문자를 이스케이프합니다. 나중에 공백이 있으면 모든 것을 망칠 것입니다. 따라서이 답변을 참조 용으로 으로 남겨 두었습니다. - 나는 그랬듯이 효과가 있었는지 몰랐습니다.

+1

백 슬래시는 실제로 다음 줄 바꿈 문자를 이스케이프 처리합니다. 소스에있는 백 슬래시와 개행 문자 사이에 공백 문자가 없는지 확인해야합니다. 이 때문에이 기술을 사용하는 것은 바람직하지 않습니다. 오히려 여러 줄 문자열이나 괄호로 묶인 표현식을 사용하십시오. – moooeeeep

+0

명령문 자체에서 다음 줄 바꿈 문자를 이스케이프 처리하는지, 아니면 문자열에서 이스케이프 처리한다는 의미입니까? 나는 두 번째 예제 ('+'사용)에서 그 동작을 기대하지 않기 때문에 물어 본다. – 2rs2ts

+1

사실, [답변을 찾았습니다] (http://docs.python.org/dev/howto/doanddont.html#using-backslash-to-continue-statements). 나는 그걸 모르고 ... 고마워! – 2rs2ts

0

여러 줄로 된 문자열을 사용하면됩니다. 이 방법으로 문자열 리터럴의 개행 문자가 보존됩니다 (나는 이것이 당신이 성취하고자하는 것이라고 가정합니다).

예 :

given = raw_input("""Is %s your number? 
Enter 'h' to indicate the guess is too high. 
Enter 'l' to indicate the guess is too low. 
Enter 'c' to indicate that I guessed correctly""" % ans) 
관련 문제