解决方案之一是将所有itermediate字符串存储到容器中,然后再将它们join。报价文件:string.join(words[, sep]) Concatenate a list or tuple of words with intervening occurrences of sep. The default value for sep is a single space character. It is always true that string.join(string.split(s, sep), sep) equals 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
^{}是交叉操作系统常量,具有正确的换行符。在The string used to separate (or, rather, terminate) lines on the
current platform. This may be a single character, such as '\n' for
POSIX, or multiple characters, for example, '\r\n' for Windows. Do not
use os.linesep as a line terminator when writing files opened in text
mode (the default); use a single '\n' instead, on all platforms.