Python

Опять "записная книжка" на Python. В прошлый раз упустил из виду что index возвращает только первое вхождение, т. е. (+)

... из однофамильцев найдет только первого которого встретит. Например есть Сергеев Андрей и Сергеев Иван. Андрея при нажатии кнопки "удалить контакт" удалит , а Ивана просто не найдет.
Пришлось переписывать. В таком варианте новых проблем не будет?
Весь код
https://pastebin.com/vVwmGzBg
Функция которую вешаем на кнопку "Удалить контакт" на строке 167

                  
Зря ты нейросети так хейтишь, они тебе правильные вещи говорят. К тому же у тебя плохой стиль написания кода - у тебя куча работы со списками, всё это можно (и нужно) написать в одну строку
Oleg Dahl
Oleg Dahl
8 869
Лучший ответ
Oleg Dahl И логика с интерфейсом намешана - совсем плохо
про этот явный баг молчали гробовым молчанием
А ты кем себя возомнил, чтобы каждый твой баг разбирали. Здесь проект Ответов на вопросы, а не твой личный блог.
Дмитрий Соловьев Это просто "камушек в огород" нейросетей. Я ничего не требую
Ваша функция to_del_contact() удаляет контакты по имени и фамилии, причём, она удалит только первого найденного контакта с таким именем и фамилией.

Если в вашей записной книжке есть несколько контактов с одинаковыми именем и фамилией, то функция удалит только одного из них. Если вы хотите удалить всех контактов с таким именем и фамилией, то нужно модифицировать эту функцию так, чтобы она удаляла все вхождения, а не только первое.

Также стоит отметить, что при большой базе данных этот код будет работать неэффективно, так как он целиком считывает файл, затем перезаписывает его. Для больших баз данных следует использовать более эффективную структуру данных и/или методы работы с данными.

В текущем виде скрипт корректно работает при условии, что у каждого контакта уникальное сочетание имени и фамилии. Если условие уникальности не выполнено, возникают описанные вами проблемы. Для решения проблемы можно использовать уникальный идентификатор для каждого контакта, например, его номер телефона при условии что он уникален для каждого контакта.
Сергей Королев Ещё один затупок скопировал ответ нейросети, и не пишет об этом.
Дмитрий Соловьев Опять твоя нейросеть позорно облажалась. Я как раз и переписал функцию для того чтобы она удаляла не только первое найденное вхождение, а любое найденное вхождение. Лучше не старайся больше со своей говносетью, она порит лютую чушь
Дмитрий Соловьев А одинаковых имен и фамилий в списке вообще быть не должно
Код работает, но его можно улучшить
Например код использует линейный поиск для нахождения совпадений, если записей будет много то это уже не хорошо, во вторых вместо текстового файла для хранения лучше база данных, я уже молчу что некоторые части код можно оптимизировать, вынеся их в отдельные функции и прочее. В целом код рабочий, но сыроват
JP
Jolmurza Perdebaev
3 288
Jolmurza Perdebaev Нейросетками конечно я отвечаю, но и в питончике немного смыслю)