【问题标题】:Multiline string return statement python [closed]多行字符串返回语句python [关闭]
【发布时间】:2018-08-12 00:13:42
【问题描述】:

我有一个简短但也许并不简单的问题。

我将如何格式化此代码以避免错误?

def __str__(self):
    return  "\nTeam name is " + 
            self.teamName + 
            "\nTheir regular season record was " + self.record +
            "\nTheir win streak is " + self.winStreak +
            "\nTheir scoring percentage is " +
             self.scoringPercentage +
            "\nTheir average rebounds are " + 
            self.rebounds +
            "\nTheir passing is " + self.passing +
            "\nTheir turnovers are " + self.turnovers

IDLE 给出了语法错误。

【问题讨论】:

  • 请使用代码指令正确格式化。
  • 你没有说你遇到了什么错误。

标签: python string return string-concatenation


【解决方案1】:

我还没有看到给出的fstring 示例(Python 3.6+):

>>> from textwrap import dedent
... 
... 
... class Hmm:
...     def __init__(self):
...         self.team_name = 'TEAM'
...         self.record = 'RECORD'
...         self.win_streak = 'WINSTREAK'
...         self.scoring_percentage = 'SCORING_PERCENTAGE'
...         self.passing = 'PASSING'
...         self.rebounds = 'REBOUNDS'
...         self.turnovers = 'TURNOVERS'
... 
...     def __str__(self):
...         return dedent(f"""
...             Team name is {self.team_name}
...             Their regular season record was {self.record}
...             Their win streak is {self.win_streak}
...             Their scoring percentage is {self.scoring_percentage}
...             Their average rebounds are {self.rebounds}
...             Their passing is {self.passing}
...             Their turnovers are {self.turnovers}""")
... 
>>> print(Hmm())

Team name is TEAM
Their regular season record was RECORD
Their win streak is WINSTREAK
Their scoring percentage is SCORING_PERCENTAGE
Their average rebounds are REBOUNDS
Their passing is PASSING
Their turnovers are TURNOVERS

【讨论】:

    【解决方案2】:

    我们应该尽量避免在字符串中使用+ 运算符,因为每个+ 可能会创建一个中间字符串。 使用"""(双引号)或'''(单引号)表示多行字符串,或使用\ 分隔它们。

    注意:"""''' 应谨慎使用,否则可能会在两行之间打印太多空格。

    使用格式或类似概念来格式化字符串。

    def __str__(self):
        return  "Team name is {0}\n"\
                "Their regular season record was {1}\n"\
                "Their win streak is {2}\n"\
                "heir scoring percentage is {3}\n"\
                "Their average rebounds are {4}\n"\
                "Their passing is {5}\n"\
                "Their turnovers are {6}".format( self.teamName,
                self.record, self.winStreak, 
                self.scoringPercentage,self.rebounds,
                self.passing, self.turnovers )
    

    使用"""

    def __str__(self):
            return  """Team name is {0}
    Their regular season record was {1}
    Their win streak is {2}
    Their scoring percentage is {3}
    Their average rebounds are {4}
    Their passing is {5}
    Their turnovers are {6}""".format( self.teamName,
    self.record, self.winStreak, self.scoringPercentage, self.rebounds,self.passing, self.turnovers ) 
    

    使用带有关键字参数的格式。

    def __str__(self):
            return  """Team name is {name}
    Their regular season record was {record}
    Their win streak is {streak}
    Their scoring percentage is {score}
    Their average rebounds are {rebounds}
    Their passing is {passing}
    Their turnovers are {turnovers}""".format( name=self.teamName,
    record=self.record, streak=self.winStreak, score=self.scoringPercentage,
    rebounds=self.rebounds,passing=self.passing, turnovers=self.turnovers ) 
    

    使用类似 C/C++ 的字符串格式样式。

        def __str__(self):
           return  """Team name is %s
    Their regular season record was %.2f
    Their win streak is %s
    Their scoring percentage is %s
    Their average rebounds are %s
    Their passing is %s
    Their turnovers are %s"""%( self.teamName,
       self.record, self.winStreak, self.scoringPercentage, 
       self.rebounds,self.passing, self.turnovers )
    

    https://ideone.com/xJ31fN

    【讨论】:

    【解决方案3】:

    适用于 Python 2 和 3 的一个选项是使用 join() 函数

    def __str__(self):
        out = ['\nTeam name is ' + self.teamName]
        out.append('Their regular season record was ' + self.record)
        out.append('Their win streak is ' + self.winStreak)
        out.append('Their scoring percentage is ' + self.scoringPercentage)
        out.append('Their average rebounds are ' + self.rebounds)
        out.append('Their passing is ' + self.passing)
        out.append('Their turnovers are ' + self.turnovers)
        return '\n'.join(out)
    

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      相关资源
      最近更新 更多