问题描述
我试图从文本文件中读取一些数据并多次打印,如下所示:
fruits.txt
apple
banana
orange
file = open(
"D:/Python/fruits.txt","r")
f = []
for line in file:
f.append(line.strip())
file.close()
for fruits in f:
print(f"Sam likes {fruits}")
print()
for fruits in f:
print(f"James does't like {fruits}")
print()
for fruits in f:
print(f"Bob likes {fruits}")
除了上述方法之外,还有什么方法可以使我的代码更简洁,而不必为每个人重复for循环? 我想用文本文件中的数据打印每个人,然后继续下一个人,依此类推。 我已经在寻找任何解决方案,但仍然找不到最佳答案。希望有人能帮助我。谢谢
解决方法
names = ['Sam likes ','James doesn\'t like ','Bob likes ']
for name in names:
for fruits in f:
print(name + fruits)
类似的事情应该起作用。
,我会这样
fruits = ['apple','banana','orange']
persons = ['Sam','Bob','James']
personsLikesFruits = ['Sam','Bob']
for person in persons:
print()
does_like_fruits = person in personsLikesFruits
for fruit in fruits:
print(f"{person} {'likes' if does_like_fruits else 'doesnt like'} {fruit}")
打印以下内容
Sam likes apple
Sam likes banana
Sam likes orange
Bob likes apple
Bob likes banana
Bob likes orange
James doesnt like apple
James doesnt like banana
James doesnt like orange
正如@tdelaney在评论中提到的那样,您可以使用with
语句打开文件,因此不必手动close
with open("D:/Python/fruits.txt") as file:
fruits = [line.strip() for line in file]
修改
使用@chepner提到的itertools.product
。
import itertools
for p,f in itertools.product(persons,fruits):
does_like_fruits = p in personsLikesFruits
print(f"{p} {'likes' if does_like_fruits else 'doesnt like'} {f}")