Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Python
Перезагрузить страницу Python
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Kadet12 Kadet12 вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.02.2019
Post Python - 07.02.2019, 00:21

Структуры
1. Опишите структуру, в которой хранится информация о
а) видеозаписи;
б) сотруднике фирмы «Рога и Копыта»;
в) самолёте;
г) породистой собаке.
2. Постройте программу, которая работает с базой данных, хранящейся в виде файла. Ваша СУБД (система управления базой данных) должна иметь следующие возможности:
а) просмотр записей;
б) добавление записей;
в) удаление записей;
г) сортировка по одному из полей.

чайник хелп))
Ответить с цитированием
  (#2 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 95
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 04.03.2008
По умолчанию 09.02.2019, 20:01

Тестировалось на Python 3.3.1

Программа csvwrite.py создает образец базы данных
csvtest.csv Поля записей разделены запятыми.
Используется кодировка Win-1251, я не стал
экспериментировать с UTF-8.

Программа csvread.py это собственно решение задачи.
В ней используются глобальные переменные:
person={} - словарь (dictionary) данных
N=0 - число записей.
hdr=[] - заголовок (первая строка) файла csv.

Запись определена как класс class MyStruct()
и содержит для примера 3 поля.
Функция __str__(self) выдает строку, соответствующую
данному классу (используется при сохранении данных в файл, см datasave()).

Возможно, я что-то напутал с операторами global, но
программа работает правильно.

csvwrite.py
python Код:
import csv
hdr=["Actor","Role","Money"]
rows=[("Никулин" ,"Балбес" ,110),
      ("Вицин"   ,"Трус"   ,100),
      ("Могрунов","Бывалый",330)]
with open("csvtest.csv","w",newline='') as f:
    fo=csv.writer(f)
    fo.writerow(hdr)
    fo.writerows(rows)
f.close()

csvread.py

python Код:
import csv
class MyStruct():
    def __init__(self, field0, field1, field2):
        self.field0 = field0
        self.field1 = field1
        self.field2 = field2
    def __str__(self):
        res=self.field0+","+self.field1+","+self.field2
        return res

person={}
N=0
hdr=[]

def dataload():
    global N
    global person
    global hdr
    with open("csvtest.csv",newline='') as f:
        fi=csv.reader(f)
        hdr=next(fi)
        N=0
        for row in fi:
            N+=1
            person[N]=MyStruct(row[0],row[1],row[2])
    f.close()
    print(N," записей загружено")
   
def datasave():
    global N
    global person
    global hdr
    with open("csvtest.csv","w",newline="\r\n") as f2:
        f2.write("Actor,Role,Money\n")
        i=1
        while i<=N:
            f2.write(str(person[i])+"\n")
            i+=1
    f2.close()
    print(N," записей записано")

def datadisplay():
    global N
    global person
    global hdr
    print(hdr)
    i=1
    while i<=N:
        print(i,end="\t")
        print(person[i].field0,end="\t")
        print(person[i].field1,end="\t")
        print(person[i].field2)
        i+=1    
    print(N," записей")

def dataadd():
    global N
    global person
    global hdr
    actor=input("Актёр   :")
    role=input( "Роль    :")
    money=input("Зарплата:")
    N+=1
    person[N]=MyStruct(actor,role,money)

def datadel():
    global N
    global person
    global hdr
    if N>0:
        print(person[N])
        del person[N]
        print("Запись",N," удалена")
        N-=1

#сортировка словаря
def bubsort():
    global N
    global person
    global hdr
    ex=0
    T=MyStruct("","","")
    while ex==0:
        i=1
        ex=1
        while i<N:
            #Если 2 соседних элемента не отсортированы,
            #то меняем их местами и продолжаем сортировку
            if person[i].field0 > person[i+1].field0:
                T=person[i]
                person[i]=person[i+1]
                person[i+1]=T
                ex=0
            i=i+1

def hlp():
    print(
"""
1 - Загрузить данные
2 - Сохранить данные
3 - Добавить запись
4 - Удалить последнюю запись
5 - Сортировать по фамилии
6 - Вывести данные на дисплей
7 - Подсказка (Этот текст)
0 = Закончить работу
"""
)

#main
dataload()
i=""
while i != "0":
    i=input(">")
    if i=="1":
        dataload()
        datadisplay()
    elif i=="2":
        datasave()
    elif i=="3":
        dataadd()
        datadisplay()
    elif i=="4":
        datadel()
        datadisplay()
    elif i=="5":
        bubsort()
        datadisplay()
    elif i=="6":
        datadisplay()
    elif i=="7":
        hlp()
    elif i=="0":
        print("Программа завершена")
    else:
        hlp()
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипты Python StanLee Общие вопросы программирования 0 22.11.2018 14:15
Python под блокчейн bach7 Python 1 02.09.2018 21:01
Python и операционные системы pavelr Python 0 27.07.2012 15:32
Редактор для Python hiphopdjedai Python 1 27.06.2012 09:37
Qt и Python Kingston Python 4 10.01.2012 17:34
[Ищется] Python-разработчик some_birdie Работа 0 20.10.2011 02:33
где скачать python? Джо++ Вопросы начинающих программистов 3 14.05.2011 20:22
Лексический анализатор для Python Love133 Python 2 26.11.2008 05:29
Python что это такое Кошмар Мысли вслух 94 14.06.2007 11:51
Дистрибутивы PHP, Python ufproject Зацените! 3 08.04.2007 21:36



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов