2013-09-01 3 views
4

운이없는 상황을 파악하려고하는 인터 웹을 샅샅이 조사했습니다. 내가 아는 한 일반적으로 하나의 return 문을 가지고 있지만 내 문제는 테스트가 'true'를 반환하기 위해 return 문에 줄 바꿈이 있어야한다는 것입니다. 내가 시도한 것은 오류를 던지고있는 것일뿐, 신참 실수 일 뿐이다. 줄 바꿈을 시도하지 않는 현재 함수는 아래와 같습니다.여러 줄로 된 문장을 반환

def game(word, con): 
    return (word + str('!') 
    word + str(',') + word + str(phrase1) 

새 줄 바꿈 (\ n)은 return 문에서 작동합니까? 그건 내 시험이 아니야.

+2

"테스트가 '사실'로 돌아가려면 내 return 문에 줄 바꿈이 있어야합니다. 그렇지 않습니다. 대개 return 문 자체가 아니라 리턴하는 문자열에 줄 바꿈을 넣기를 원할 것입니다. ' '\ n' '으로 할 수 있습니다. – user2357112

+1

"interwebs"? – glglgl

답변

9

파이썬에서 열려있는 괄호는 다음 줄을 닫는 괄호까지 동일한 줄의 일부로 간주합니다.

def game(word, con): 
    return (word + str('!') + 
      word + str(',') + 
      word + str(phrase1)) 

을하지만이 특별한 경우에 그 권하고 싶지 않다 :

그래서 당신은 할 수 있습니다. 구문 론적으로 유효하고 다른 곳에서도 사용할 수 있기 때문에 언급합니다. 당신이 할 수있는

또 다른 것은 백 슬래시를 사용할 수 있습니다 :

def game(word, con): 
    return word + '!' + \ 
      word + ',' + \ 
      word + str(phrase) 
    # Removed the redundant str('!'), since '!' is a string literal we don't need to convert it 

또는이 특정한 경우에, 내 충고는 형식 문자열을 사용하는 것입니다.

def game(word, con): 
    return "{word}!{word},{word}{phrase1}".format(
     word=word, phrase1=phrase1") 

귀하의 기능과 기능적으로 동일하지만 실제로 알 수는 없습니다. 후자는 내가이 경우에도 할 것입니다.

STRING에서 줄 바꿈을 사용하려는 경우 "\ n"을 문자열 리터럴로 사용할 수 있습니다.

def break_line(): 
    return "line\nbreak" 
2

당신은 return 문에 라인을 분할 할 수 있습니다,하지만 당신은 끝에 괄호를 잊어하고 또 다른 운영자로 분리 할 필요가 (이 경우에는 +)

변경 한 :

def game(word, con): 
    return (word + str('!') 
    word + str(',') + word + str(phrase1) 

사람 :

def game(word, con): 
    return (word + str('!') + # <--- plus sign 
    word + str(',') + word + str(phrase1)) 
#          ^Note the extra parenthesis 

참고 캘러스 ngstr()'!'이고 ','은 무의미합니다. 그들은 이미 문자열입니다.

1

먼저 str()을 사용하여 여러 문자열을 문자열로 변환합니다. 이것은 꼭 필요한 것은 아닙니다.

둘째 - 작성중인 문자열에 개행 문자를 삽입하는 코드가 없습니다. 문자열 중간에 개행 문자를 추가하는 것은 개행 문자를 추가하지 않으므로 명시 적으로해야합니다.

난 당신이 뭘 하려는지 것은 이런 일이 될 것이라고 생각한다

def game(word, con): 
    return (word + '!' + '\n' + 
     word + ',' + word + str(phrase1)) 

은 내가 무엇 phrase1 알 수 없기 때문에 str(phrase1)에 호출에 떠날거야 - 이미 A의 경우 문자열 또는 .__str__() 메서드 이 필요하지 않습니다.

내가 작성하려고하는 문자열이 두 줄에 걸쳐 있다고 가정하므로 끝에 괄호가 누락되었습니다.

+2

문자열에 비 문자열을 추가하려고하면'__str__'이 자동으로 호출되지 않습니다. '__str__'을 호출하는'str'을 호출하거나'__str__'이 없다면'__repr__'을 호출해야합니다. – user2357112

관련 문제