我有以下功能,循环通过两个列表,打印出一系列蔬菜,然后是水果.
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循环?任何帮助真的很感激.
解决方案之一是将所有中间字符串存储到容器中,然后将它们连接起来.引用文档:
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常量.
用于分隔(或更确切地说,终止)当前平台上的行的字符串.这可能是单个字符,例如POSIX的'\n'或多个字符,例如Windows的'\ r \n'.在编写以文本模式打开的文件时,不要将os.linesep用作行终止符(默认值); 在所有平台上使用单个'\n'代替.
此外,半相关的问题:附加到字符串的好方法.