我有以下功能,循环浏览两个列表并打印出一系列蔬菜,然后是水果。
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循环?任何帮助真的很感激。
答案 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())