Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 31
1

Как сделать записную книжку по приведённому шаблону?

26.11.2013, 14:23. Показов 4918. Ответов 9
Метки нет (Все метки)

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

Кликните здесь для просмотра всего текста
Для начала научимся работать с файлами. В своей папке создайте папку (на этот
раз папку!) lab3, в ней два файла: lab3.py и book.db.
Первый файл - код с логикой для обработки данных, второй - файл с данными
книжки.

Для начала запишем данные в файл book.db, чтобы было над чем работать и на чем
тестировать код.

Откройте файл book.db и напишите что-то в духе:

Код
Alex 12345665 15135155
Nick 12415531 51235135
John 33523623 52365262
Eric 23511651 31531355
...
...
И так далее.

Предположим, что первое поле нашей книжки - это имя, второе и третье - телефон.

Теперь откроем файл lab3.py и начнем писать:

Python
1
2
3
4
5
6
7
8
# -*- coding: utf8 -*-
from os import path 
 
# В модуле os есть объект path, который содержит очень полезный для нас метод 
# (метод - примерно то же самое что и функция, только она принадлежит какому-то
# объекту) exists(), который говорит нам, существует ли указанный файл/папка или
# нет. Например, если вызвать path.exists("book.db") то получим True (а значит 
# можем использовать сие в качестве условия if'а).
Может вы уже знаете, что в C++ исполнение программы начинается с функции main,
так вот, в python тоже можно заставить выполняться программу с определенного
места, записав следующее:

Python
1
2
if __name__ == "__main__":
    # Тут идет какой-то код...
Перед if можно определять сколько угодно функций/классов (пока что не заморачи-
ваемся что такое объект/класс), но исполнение начнется с данного if'а!

Python
1
2
3
4
5
6
7
def lol(something):
    print(something)
 
lol("lololo") # Здесь вызов не пройдет!
 
if __name__ == "__main__":
    lol("ololo") # а вот это - выполнится.
Вдохнули воздуха побольше. Работа с файлами.

Чтобы в программе открыть какой-нибудь файл (book.db, например), нужно
воспользоваться функцией open (логично, не так ли?), которая в качестве
первого аргумента принимает путь к файлу (в нашем случае - это просто book.db),
второго - режим работы с файлом. Режимов на самом деле много (читаем гугл), но
нас интересуют два: "r" и "w", которые означают "Открыть файл для чтения" и
"Открыть файл для записи", соответственно.

Например, чтобы открыть файл для чтения, нужно написать следующее:
Python
1
my_file = open("book.db", "r")
Теперь my_file ассоциируется с открытым файлом.

Что можно сделать с ним?
- Прочитать строчку:
Python
1
line = my_file.readline()
line будет содержать
Код
Alex 12345665 15135155\n
- Прочитать сразу все строчки:
Python
1
lines = my_file.readlines()
lines - это список всех строк.
- Записать строчки в файл.
Python
1
my_file.writelines(["lol", "lol2"])
Для записи нужно убедиться, что файл открыт для записи! Если перед этим
файл был открыт для чтения, то сперва его нужно закрыть, потом - открыть
для записи.
- Закрыть файл (обязательно после конца работы!)
Python
1
my_file.close()
И так далее. Если хочется чего-то еще -> гугл.

Помните, когда вы прочтете один символ из файла, указатель сдвинется ровно
на столько же, как сдвинуть указатель обратно -> гугл. Гуглите работу с
файлами в python, хотя все необходимое для лабы я уже написал.

Итак, что от вас требуется. Имеется некоторый шаблон:

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
def change_tel(name, new_tel):
        ...
 
def change_name(tel, new_name):
        ...
 
def find_record_by_name(name):
        ...
 
def add_record(new_record, db):
        ...
 
def delete_record(name):
        ...
 
if __name__ == "__main__":
    book_file = open("book.db", "r")
    ...
    ...
    while (Не считана буква Е - для выхода):
        предложить пользователю возможные команды,
        а именно:
        Добавить новое имя в книгу
        Удалить имя из книги
        Изменить номер 1 для имени name
        Изменить номер 2 для имени name
        Пользователь вводит букву, вы - 
        вызываете соответствующую функцию (см. выше)
 
        Например, что-то в духе этого:
        cmd = raw_input("Введите коману: ")
        if cmd == 'a' or cmd == 'A':
                                name = raw_input("Введите имя: ")
                                tel = raw_input("Введите номер 1: ")
                                mtel = raw_input("Введите номер 2: ")
                                add_rec(...)
Продумайте логику работы цикла: когда что спрашивать,
когда и как вызвать ту или иную функцию. Мой совет: откройте файл, считайте
все строки в список, закройте файл; в зависимости от заданной команды вызывайте
функцию, передавая список строк в качестве параметра. В функции изменяяете
или добавляете имена/телефоны в списке, возвращаете его из функции, сохраняя
в переменной. Как только работа закончена (пользователь ввел букву E),
открываете файл на запись и список строк сохраняете (writelines).
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2013, 14:23
Ответы с готовыми решениями:

Опишите, используя словарь, записную книжку (фамилия, номер телефона)
Опишите, используя словарь, записную книжку (фамилия, номер телефона). Составьте программу,...

Ищу программу записную книжку
Я сейчас использую программу flashnote для того чтобы делать быстрые записи. Но с течением времени...

Создать приложение – электронную записную книжку
Помогите пожалуйста, сама в этом вообще не соображаю. Создать приложение – электронную записную...

Нужно написать записную книжку на языке C#
Необходимо осуществить следующее: Написать записную книжку которая будет хранить данные о...

9
2730 / 2333 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
26.11.2013, 14:58 2
masasc, и в чем проблема? Вроде адекватная лаба, причём очень даже подробная.
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 2
27.11.2013, 13:46 3
masasc, работа достаточно простая, могу подсказать что и как делать (не все сразу, конечно).
0
6 / 6 / 5
Регистрация: 02.06.2013
Сообщений: 47
28.11.2013, 11:10 4
А ещё можно открыть книжку Лутца "Программирование на Python", там есть параграф про базы данных.
0
2730 / 2333 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
28.11.2013, 16:03 5
Цитата Сообщение от destroymol Посмотреть сообщение
А ещё можно открыть книжку Лутца "Программирование на Python", там есть параграф про базы данных.
Не думаю, что у человека какие-то трудности с выполнением, ему тупо влом. Если было-бы не понятно, то участвовал в беседе, спрашивал, что не понятно и т д

 Комментарий модератора 
правила
3.1. Уважительно относитесь к другим участникам форума.
0
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 31
29.11.2013, 01:42  [ТС] 6
Был бы благодарен если бы хоть что-нибудь подсказали чтобы было с чего начать
Цитата Сообщение от sunzilog Посмотреть сообщение
masasc, работа достаточно простая, могу подсказать что и как делать (не все сразу, конечно).
0
4857 / 3278 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
29.11.2013, 09:06 7
Цитата Сообщение от masasc Посмотреть сообщение
Был бы благодарен если бы хоть что-нибудь подсказали чтобы было с чего начать
создай проект, сделай простой скрипт, выводящий сообщение
0
4441 / 3442 / 349
Регистрация: 12.03.2013
Сообщений: 5,927
29.11.2013, 16:35 8
Цитата Сообщение от masasc Посмотреть сообщение
Python
1
2
3
lol("lololo") # Здесь вызов не пройдет!
if __name__ == "__main__":
    lol("ololo") # а вот это - выполнится.
Вот уж правда лол. Чего это он "не пройдёт"?

masasc, вы решили уроки для начинающих запилить? Гут.
1
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 31
30.11.2013, 16:31  [ТС] 9
Цитата Сообщение от helter Посмотреть сообщение
masasc, вы решили уроки для начинающих запилить? Гут.
Вообще я создавал не как урок ,а хотел узнать как написать )
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 2
30.11.2013, 17:11 10
Цитата Сообщение от helter Посмотреть сообщение
Вот уж правда лол. Чего это он "не пройдёт"?

masasc, вы решили уроки для начинающих запилить? Гут.
Согласен, косяк, бывает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2013, 17:11

Создать в Excel приложение - записную книжку
Создать в Excel приложение - записную книжка. С помощью формы в нее можно вносить, просматривать и...

Помогите написать Записную книжку на С++ билдере
Нужно написать Программу имитирующую работу простейшей записной книжки, позваляющая отслеживать...

Создать динамическую записную книжку, используя структуру
Создать динамическую записную книжку, используя структуру struct book{ char name; char...

Опишите, используя структуру данных запись, записную книжку
Опишите, используя структуру данных запись, записную книжку (фамилия и инициалы, год рождения, дата...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru