2013-09-01 56 views
4

已經嘗試瞭解這個問題的互聯網,但沒有運氣。據我所知,你通常只有一個return語句,但是我的問題是我需要在我的return語句中換行,以便測試返回'true'。我所嘗試的是拋出錯誤,可能只是一個菜鳥的錯誤。我目前的功能沒有嘗試進行換行。多行上的退貨聲明

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

新的換行符(\ n)應該在返回語句中工作嗎?這不在我的測試中。

+2

「爲了讓測試返回'真正',我需要在我的返回語句中有換行符。」 - 不,你不知道。最有可能的是,你想在你要返回的字符串中換行,而不是在return語句本身。這可以用'\ n'來完成。 – user2357112

+1

「interwebs」? – glglgl

回答

9

在python中,開放paren會導致後續行被認爲是同一行的一部分,直到關閉爲止。

所以,你可以這樣做:

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 

注意,愈傷組織ng str() on '!' and ','是毫無意義的。他們已經是字符串。

1

首先 - 您正在使用str()將幾個字符串轉換爲字符串。這不是必需的。

其次 - 代碼中沒有任何內容會在您正在構建的字符串中插入換行符。只是在字符串中間有一個換行符不會添加換行符,您需要明確地執行該操作。

我認爲你正在試圖做什麼會是這樣的:

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

我留在調用str(phrase1),因爲我不知道什麼是phrase1 - 如果它已經是一個字符串 ,或者有一個 .__str__()方法 這不應該需要。

我假設您正在嘗試構建的字符串跨越兩行,因此我在末尾添加了缺少的括號。

+2

當您嘗試將非字符串添加到字符串時,__str__'不會自動調用。如果沒有'__str__',你需要調用'str',它將調用'__str__',或'__repr__'。 – user2357112