我有以下功能,循环通过两个列表,打印出一系列蔬菜,然后是水果.
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())
Run Code Online (Sandbox Code Playgroud)
所以结果可能如下:
VEGETABLES FOR THE WEEK:
BROCOLLI
PEAS
CARROTS
SWEET CORN
WHITE ONIONS
FRUITS FOR THE WEEK:
GRAPEFRUIT
CHERRIES
ORANGE
COCONUT
RASPBERRIES
Run Code Online (Sandbox Code Playgroud)
我正在努力将函数的打印结果分配给包含格式化字符串的单个变量.我是否需要将结果保存为文本文件然后再次读取?我可以使用文本连接吗?我不确定如何处理函数中的for循环?任何帮助真的很感激.
解决方案之一是将所有中间字符串存储到容器中,然后将它们连接起来.引用文档:
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
Run Code Online (Sandbox Code Playgroud)
os.linesep 是具有正确换行符的跨os常量.
用于分隔(或更确切地说,终止)当前平台上的行的字符串.这可能是单个字符,例如POSIX的'\n'或多个字符,例如Windows的'\ r \n'.在编写以文本模式打开的文件时,不要将os.linesep用作行终止符(默认值); 在所有平台上使用单个'\n'代替.
此外,半相关的问题:附加到字符串的好方法.