Python函数返回多个元素

2024-10-02 00:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下功能:

    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))

调用时返回以下内容(示例): enter image description here

它返回它需要返回的内容,在这里一切都很好,但我的问题是如何将所有返回文本以这种格式存储在变量、字符串或任何其他形式中,以便使用smtplib通过电子邮件发送。如果我尝试使用消息体:selfitem.fisap()发送电子邮件,它将不发送任何邮件。 这样地: enter image description here

非常感谢您的帮助


Tags: inself功能datadefkeysprintnrc
2条回答

在打印之前,您需要将整个消息存储在一个字符串中,只有这样您才能使用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

谢谢你! 基于您的解决方案,我编写了以下代码,并且成功了:

    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)

相关问题 更多 >

    热门问题