Python:如何从列表中打印单独的行?

时间:2018-07-14 02:08:32

标签: python python-3.x class append

这是我的代码:

class Message:

    def __init__(self,sender,recipient):
        self.sender = sender
        self.recipient = recipient
        self.wishList = []

    def append(self,line):
        self.wishList.append(str(line))
        for i in line:
            return i

    def toString(self):
        return 'From:{}\nTo:{}\n{}'.format(self.sender,self.recipient,
                                           self.wishList)

,输出为:

From:Aria

To:Santa

['For Christmas, I would like:', 'Video games', 'World peace']

如何分隔行并进行如下输出?

From:Aria

To:Santa

For Christmas, I would like:

Video games

World peace

3 个答案:

答案 0 :(得分:1)

您可以使用<p>将列表转换为字符串。在您的代码中将是这样。

"joinerchar".join(list)

答案 1 :(得分:1)

想象一下您的数组是return 'From:{}\nTo:{}\n{}'.format(self.sender,self.recipient, "\n".join(self.wishList))

然后arr基本上是获取数组并在每个数组之间插入新行。

在该示例中,您应该可以弄清楚:)如果需要更多帮助,请发表评论。

答案 2 :(得分:0)

首先,一些观察:

  1. 为什么在将元素添加到愿望清单后返回第一个字符? (我认为它没有用,因此已将其从答案中删除)

  2. 我想您应该为圣诞节添加 作为要打印的模板的一部分。

  3. 使用str.join()可能是连接wishList元素的最佳选择。

  4. 您曾经听说过PEP-8,因为您使用的是upperCamelCase,所以基本上看来您来自Java或C#语言,首选Python _

  5. 我认为假设要输入一个字符串,将行转换为str并不重要,但是让我们保留它。

假设您使用的是Python 3.6+,则可以使用字符串插值:

class Message:
    def __init__(self, sender, recipient):
        self.sender = sender
        self.recipient = recipient
        self.wish_list = []

    def append(self, line):
        self.wish_list.append(str(line))

    def toString(self):
        nl = '\n'
        return f'From: {self.sender}{nl}To: {self.recipient}{nl}For Christmas, I would like:{nl}{nl.join(self.wish_list)}'

如果运行以下代码:

m = Message('Aria', 'Santa')
m.append('Video games')
m.append('World peace')
print(m.toString())

输出将是:

From: Aria
To: Santa
For Christmas, I would like:
Video games
World peace