Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.05.2021
Сообщений: 18

Функции для чтения, записи файлов

18.05.2021, 21:11. Показов 1190. Ответов 1

Студворк — интернет-сервис помощи студентам
Есть файл contacts.txt со следующим содержанием [
{
"name": "John",
"phone": "123456"
},
{
"name": "Jane",
"phone": "654321"
},
{
"name": "Bob",
"phone": "+1234"
},
]

Указания:
1.При запуске должен загружаться список контактов из файла.
2.При создании, изменении или удалении контакта файл должен полностью перезаписываться новыми данными.
3.Чтение и запись данных в файл должны выполняться в отдельных функциях.
4.Необходимо сделать проверку на наличие в имени контакта запятой - запретите добавление контакта, если этот символ присутствует в имени.
5. Все изменения требуется вносить в законченную версию программы(код программы ниже)
6. Добавьте сортировку контактов по алфавиту перед выводом списка контактов. Используйте метод списка sort или функцию sorted() и лямбда-выражение для сортировки.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
with open("contacts.txt", 'r') as file:       #добавил функцию для открытия файла,
                                                            #но когда ищу контакт через find и ввожу имя Bob , пишет что такого контакта 
                                                             #нет, почему?
    print(file.read())
 
print("""Введите команду:
* list - вывести контакты
* find - найти контакт 
* add  - добавить контакт
* edit - изменить контакт 
* delete  - удалить контакт
* exit - выход""")
 
def list(contacts):
    print("{:<10}".format('Name'), f"{'Phone':>10}")
    for contact in contacts:
        print("{:<10}".format(contact['name']), "{:>10}".format(contact['phone']))
 
def find(contacts):
    print("Найти контакт:")
    name = input("> ")
    for contact in contacts:
        if contact['name'] == name:
            print(f"{contact['name']:<10}", "{:>10}".format(contact['phone']))
            break
        else:
            print("Контакт не найден")
 
def delete(contacts):
    print("Введите контакт: ")
    name = input('> ')
    for contact in contacts:
        if contact['name'] == name:
            print("Удалить контакт %s (YES/NO)?: " % name)
            name_del = input('> ')
            if name_del == "YES":
                contacts.remove(contact)
                print("Вы удалили контакт %s " % name)
 
def add(contacts):
    print("Введите имя контакта:")
    name = input("> ")
    print("Введите телефон контакта:")
    phone = input("> ")
    new_contact = {'name': name, 'phone': phone}
    contacts.append(new_contact)
    print("Контакт добавлен и сохранён")
def edit(contacts):
    print("Введите имя контакта: ")
    name = input("> ")
    for index, contact in enumerate(contacts):
        if contact['name'] == name:
            print("Введите новое имя контакта: ")
            new_name = input("> ")
            print("Введите новый телефон контакта: ")
            new_phone = input("> ")
            contact_update = {
                'name': new_name,
                'phone': new_phone
            }
            contacts[index] = contact_update
            index = -1
            break
    if index == -1:
        print("Контакт изменен")
    else:
        print("Контакт не найден")
while True:
    print("\nВведите команду: ")
    command = input('> ')
    if command == 'list':
        list(contacts)
    elif command == 'find':
        find(contacts)
    elif command == 'add':
        add(contacts)
    elif command == 'edit':
        edit(contacts)
    elif command == 'delete':
        delete(contacts)
    elif command == 'exit':
        break
    else:
        print("Такой команды нет")
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2021, 21:11
Ответы с готовыми решениями:

Написать функции для чтения/записи отдельных бит для любой записи из данного набора
Начиная с адреса А в памяти МК находятся N записей длиной k бит каждая. Записи выровнены по границе слова. Написать функции для...

Видоизменить программу для чтения и записи файлов
Помогите написать программу. задача следующая: В одном файле даны: код фамилии и сама фамилия студента(количество может меняться) во 2...

После ОpenFileDialog меняется директория для чтения/записи файлов О.о
Здравствуйте. У меня в программе есть компонент OpenFileDialog. После его использования допустим такое выражение StreamReader sr=new...

1
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
18.05.2021, 21:29
Vitalik_nat, ты изначально пошёл по не верному пути, не смотря на расширение txt файл являяется json то есть тебе проще как то так
Python
1
2
3
4
5
6
7
import json
data=json.load('file')
total={}
for it in data:
    total[it[name]]=it[phone]
print(total)
#словарь{john:123,steve:456...}
Добавлено через 2 минуты
Цитата Сообщение от Vitalik_nat Посмотреть сообщение
if contact['name'] == name:
вероятно по этому так как ты наверное не отсёк лишние символы типа кавычек, переносов строк
замени на
if name in contact['name']
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2021, 21:29
Помогаю со студенческими работами здесь

Где скачать Java API для чтения-записи файлов Excel и Word
Подскажите пожалуйста где можно скачать классы для работы с файлами Excel и Word

Создать иерархию типов – файл для чтения, файл для записи и файл для чтения и записи. Классы должны иметь конструкторы,
Здравствуйте Есть задание: Создать иерархию типов – файл для чтения, файл для записи и файл для чтения и записи. Классы должны иметь...

Функции для записи в сокет и чтения из сокета: как правильно задать для windows?
делала проект под Linux и в нем успешно работали write и read. Но теперь мне нужно перекомпилировать под windows. кто-нибудь знает какие...

Как передать файл в функцию для записи/чтения (разные функции)
Собственно сабж. Во первых есть вот такой блок в main: ofstream f1(&quot;F1.txt&quot;); cout&lt;&lt;&quot;Введите элементы в файл 1&quot;&lt;&lt;endl; ...

Открытие файлов для чтения (ввода) данных и для записи (вывода) данных
Программа должна включать: 1) объявление массивов вещественных данных; 2) открытие файлов для чтения (ввода) данных и для записи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru