【问题标题】:Python function return multiple elementsPython函数返回多个元素
【发布时间】:2019-05-09 03:12:50
【问题描述】:

我有以下功能:

    def fisap(self):
    print("*" * 42)
    print("Nrc", "Data".rjust(10), "Intrari".rjust(13), "Iesiri".rjust(12))
    print("*" * 42)
    for elem in self.ddop.keys():
        if elem in self.ddint.keys():
            print(str(elem), str(self.ddop[elem]).rjust(10), str(self.ddint[elem]).rjust(13))
        else:
            print(str(elem), str(self.ddop[elem]).rjust(10), str(0).rjust(13), str(self.ddies[elem]).rjust(12))
    print("*" * 42)
    print("Soldul final este de : " + str(self.sold))

调用时返回以下内容(示例):

它返回它需要返回的东西,在这里一切都很好,但我的问题是我如何将所有这些返回文本以这种格式存储在变量、字符串或其他任何东西中,以便可以使用 smtplib 通过电子邮件发送它。如果我尝试使用以下消息正文发送电子邮件: selfitem.fisap() 它发送 None 。 像这样 :

非常感谢任何帮助。

【问题讨论】:

  • 您需要将数据存储在变量中,而不是仅将其打印到控制台。然后返回该变量并将其用作电子邮件的内容。现在这个函数没有返回任何东西,这就是它显示None的原因。
  • 看看here如何附加字符串。
  • 谢谢,终于成功了!

标签: python string function email return


【解决方案1】:

您需要在打印之前将整个消息存储在一个字符串中,然后才能使用return返回它

printreturn不一样

def fisap(self):
    elements = []
    for elem in self.ddop.keys():
        if elem in self.ddint.keys():
            elements.append(str(elem), str(self.ddop[elem]).rjust(10), str(self.ddint[elem]).rjust(13))
        else:
            elements.append(str(elem), str(self.ddop[elem]).rjust(10), str(0).rjust(13), str(self.ddies[elem]).rjust(12))

    message = "{divider}\n{headers}\n{elements}\n{divider}\n{total}".format(
        divider="*" * 42,
        headers='\t'.join(["Nrc", "Data".rjust(10), "Intrari".rjust(13), "Iesiri".rjust(12)]),
        elements=elements,
        total="Soldul final este de : " + str(self.sold)
        )

    print(message)
    return message

def main():
    returned_value = fisap() #fisap() is called and its result is stored in the variable returned_value
    print(returned_value) #we can then print it again or treat it as we would a string variable

【讨论】:

    【解决方案2】:

    谢谢! 根据您的解决方案,我编写了以下代码并且它有效:

        def trimitefisaemail(self):
        a = ("*" * 42) + "\n"
        b = "Nrc" + "Data".rjust(10) + "Intrari".rjust(13) + "Iesiri".rjust(12) + "\n"
        c = []
        for elem in self.ddop.keys():
            if elem in self.ddint.keys():
                c.append(str(elem) + str(self.ddop[elem]).rjust(10) + str(self.ddint[elem]).rjust(13))
            else:
                c.append(str(elem) + str(self.ddop[elem]).rjust(10) + str(0).rjust(13) + str(self.ddies[elem]).rjust(12))
        cc = "\n".join(c)
        d = "\n" + "Soldul final este de : " + str(self.sold)
        message = "%s%s%s%s\n%s%s"%(a,b,a,cc,a,d)
        sendemailfunction(message)
    

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 2020-08-30
      • 2019-05-10
      • 2021-06-07
      相关资源
      最近更新 更多