2013-09-01 32 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