#python #set #set-intersection
#python #установить #set-пересечение
Вопрос:
Если я ввожу три имени (Rolf, Charlie, Mike), friends_nearby_set intersection
возвращает только первый ввод (Rolf).
Если я ввожу (Charlie, Rolf, Mike), friends_nearby_set intersection
возвращается только (Charlie).
Ожидаемый результат от 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()
Вот скриншот во время отладки.
Ответ №1:
Ниже приведен результат, прежде чем вводить имена, введите имена трех друзей, разделенные запятыми (без пробелов, пожалуйста)
наборы 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
будет добавляться в файл