问题描述
如果我输入了三个名字(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()
这是调试过程中的屏幕截图。
解决方法
以下是输入名称之前的输出。输入三个朋友的名称,以逗号分隔(请不要使用空格)
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
将附加在文件上