将函数打印输出分配给字符串变量

时间:2016-01-04 17:28:25

标签: python list

我有以下功能,循环浏览两个列表并打印出一系列蔬菜,然后是水果。

def Selection():
    print("VEGETABLES FOR THE WEEK:\n")
    for veg in veg_selection:
        print(veg.upper())
    print("\n")
    print("FRUITS FOR THE WEEK:\n")
    for fruit in fruit_selection:
        print(fruit.upper())

所以结果可能如下:

VEGETABLES FOR THE WEEK:

BROCOLLI
PEAS
CARROTS
SWEET CORN
WHITE ONIONS


FRUITS FOR THE WEEK:

GRAPEFRUIT
CHERRIES
ORANGE
COCONUT
RASPBERRIES

我努力想要将函数的打印结果分配给包含格式化字符串的单个变量。我是否需要将结果保存为文本文件然后再次读取?我可以使用文本连接吗?我不确定如何处理函数中的for循环?任何帮助真的很感激。

4 个答案:

答案 0 :(得分:5)

其中一个解决方案是将所有的中间字符串存储到容器中,然后将join存储起来。引用文档:

  

string.join(words[, sep])将单词的列表或元组与介入的sep出现连接起来。 sep的默认值是单个空格字符。 string.join(string.split(s, sep), sep)等于s。

总是如此

示例代码如下所示:

import os

def selection():
    strings = []
    strings.append("VEGETABLES FOR THE WEEK:\n")
    for veg in veg_selection:
        strings.append(veg.upper())
    strings.append("\n")
    strings.append("FRUITS FOR THE WEEK:\n")
    for fruit in fruit_selection:
        strings.append(fruit.upper())
    return os.linesep.join(strings)

s = selection()  # s now contains output string, and nothing is printed
print(s)  # print whole string at once

os.linesep是具有正确换行符的跨os常量。

  

用于分隔(或者说,终止)线上的字符串   目前的平台。这可能是单个字符,例如'\ n'   POSIX或多个字符,例如Windows的“\ r \ n”。不要   在编写以文本打开的文件时,使用os.linesep作为行终止符   mode(默认值);在所有平台上使用单个'\ n'。

此外,与半相关的问题:Good way to append to a string

答案 1 :(得分:1)

最简单的方法可能就是在需要的地方添加一个额外的步骤,将文本附加到变量中。见下文:

def Selection():
    output_text = "VEGETABLES FOR THE WEEK:\n"
    print("VEGETABLES FOR THE WEEK:\n")
    for veg in veg_selection:
        output_text += veg
        print(veg.upper())
    output_text += "\n"
    print("\n")
    output_text += "FRUITS FOR THE WEEK"
    print("FRUITS FOR THE WEEK:\n")
    for fruit in fruit_selection:
        output_text += fruit
        print(fruit.upper())

您可以更改代码以在结尾输出output_text字符串,而不是打印每一行。

答案 2 :(得分:1)

您可以连接到单个字符串变量,如下所示:

def Selection():
    output = "VEGETABLES FOR THE WEEK:\n"
    for veg in veg_selection:
        output += veg.upper() + "\n"
    output += "\nFRUITS FOR THE WEEK:\n"
    for fruit in fruit_selection:
        output += fruit.upper() + "\n"

然后,您可以通过添加到结尾立即打印字符串:

print(output)

或通过在末尾添加来返回字符串以供在其他地方使用:

return output

答案 3 :(得分:1)

将您的功能变为发电机:

class Child(Parent):
    def __init__(self, data):
        Parent.__init__(self, data)
        value3 = 'C3'   
        value4 = 'C4'

        # You can change 'self.value2' by assigning to it:
        self.value2 = 'P2_modified'

        # You can create this new list with the value:
        self.childList = [value3, value4, self.parentList[0], self.value2]

        # You can also modify the existing list object:
        self.parentList[1] = self.value2

然后,变成一个字符串是微不足道的:

def Selection():
    yield "VEGETABLES FOR THE WEEK:\n"
    for veg in veg_selection:
        yield veg.upper()
    yield "\n"
    yield "FRUITS FOR THE WEEK:\n"
    for fruit in fruit_selection:
        yield fruit.upper()

打印结果:

'\n'.join(Selection())