Python - 集合的交集 returns 只有第一个值

Python - Intersection of sets returns only the first value

如果我输入三个名字 (Rolf, Charlie, Mike),friends_nearby_set intersection return 只会输入第一个 (Rolf)。

如果我输入 (Charlie, Rolf, Mike) friends_nearby_set intersection return 只有 (Charlie)。

friends_nearby_set intersection 的预期输出应该是 (Rolf, Charlie)。

作者的代码return在我正在观看的视频教程中的正确值。但出于某种原因,对我来说它不是 return 一个合适的交叉路口。有什么解释吗?

friends = input('Enter three friends name, separated by commas (no spaces, please): ').split(',')

people = open('people.txt', 'r')
people_nearby = [line.strip() for line in people.readlines()]

people.close()

friends_set = set(friends)
people_nearby_set = set(people_nearby)

friends_nearby_set = friends_set.intersection(people_nearby_set)

nearby_friends_file = open('nearby_friends.txt', 'w')

for friend in friends_nearby_set:
    print(f'{friend} is nearby! Meet up with them.')
    nearby_friends_file.write(f'{friend}\n')

nearby_friends_file.close()

这是调试时的截图。

以下是输入名字前的输出输入三个朋友的名字,用逗号分隔(请不要输入space)

python 集可能区分大小写尝试删除逗号和下一个名称之间的 space 这是例子

set_1 = {'Rolf', ' Charlie'}
set_2 = {'Rolf', 'Charlie'}

print(set_1.intersection(set_2))

输出

{'Rolf'}

不是{'Rolf', 'Charlie'}因为第一个得到space之前。所以当你输入名字时要注意输入他们像 Rolf,Charlie,Mike

并尝试删除输入前后多余的 spaces,如下所示

friends = input('Enter three friends name, separated by commas (no spaces, please): ').strip().split(',')

我在这里看到你的写作方式可能是错误的根源 只需以附加模式而不是写入模式打开文件

nearby_friends_file = open('nearby_friends.txt', 'w')

nearby_friends_file = open('nearby_friends.txt', 'a')

因为 w 将覆盖文件,而 a 将追加到文件上