Python-集的交集仅返回第一个值

问题描述

如果我输入了三个名字(Rolf,Charlie和Mike),则friends_nearby_set intersection仅返回第一个输入(Rolf)。

如果我输入(查理,罗尔夫,迈克),则friends_nearby_set intersection仅返回(查理)。

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

在我正在观看的视频教程中,作者的代码返回了正确的值。但是由于某种原因,它没有返回正确的交点。有什么解释吗?

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()

这是调试过程中的屏幕截图。

debug

解决方法

以下是输入名称之前的输出。输入三个朋友的名称,以逗号分隔(请不要使用空格)

python设置可能区分大小写,尝试删除逗号和姓氏之间的空格 这是例子

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

print(set_1.intersection(set_2))

输出

{'Rolf'}

不是{'Rolf','Charlie'},因为第一个之前有空格。因此在输入名称时要注意输入Rolf,Charlie,Mike

,并尝试删除输入之前和之后的多余空格,如下所示:

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将附加在文件上