Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
КУРСОВАЯ РАБОТА
по дисциплине «Основы компьютерных и информационных наук»
Институт/Факультет/Департамент/ Студент
Центр Батыров Всеволод Олегович
(ФИО)
Институт менеджмента и
информационных технологий
Группа ПИЭ-18-1
Направление
Прикладная информатика Руководитель
Кислицын Е.В., ст. преподаватель
кафедры СЭиИУрГЭУ
(ФИО, должность, звание)
Профиль/программа
Прикладная информатика в
экономике
Кафедра
Кафедра информационных
Технологий и статистики
Екатеринбург
2018 г.
СОДЕРЖАНИЕ
Введение 3
1 Теория 5
1.2 Исследования 7
1.3 Недостатки 8
Заключение 27
Плюсы:
Минусы:
3
Актуальность темы
Цели исследования:
4
1 ТЕОРИЯ
5
1.2 ЯЗЫК ПРОГРАММИРОВАНИЯ PYTHON
Python был задуман в конце 1980-х годов Гвидо ван Россумом в Centrum
Wiskunde & Informatica (CWI) в Нидерландах как преемник языка ABC (сам
вдохновленный SETL), способный обрабатывать и взаимодействовать с
Операционная система Amoeba. Его реализация началась в декабре 1989 года.
Длительное влияние Ван Россума на Python отражено в названии.
Python 3.0 был выпущен 3 декабря 2008 года. Это был серьезный пересмотр
языка, который не полностью обратно совместим. Многие из его основных
функций были переданы в версии Python 2.6.x и версии 2.7.x. Релизы Python 3
предоставили утилиту, которая автоматизирует (по крайней мере частично)
перевод кода Python 2 на Python 3.
6
Дата окончания срока службы Python 2.7 была установлена на 2015 год, а затем
отложена до 2020 года из-за опасений, что большая часть существующего кода
не может быть легко перенесена на Python 3. В январе 2017 года Google
объявила о работе над Python 2.7, для повышение производительности.
1.2 ИССЛЕДОВАНИЯ
7
что также очень важно, позволяет повысить скорость чтения на 33 % по
сравнению с нормальной без существенной потери понимания материала.
Исследования в Уичитском университете показали, что при быстром
последовательном визуальном предъявлении английского текста на скорости
250 слов в минуту, понимание лишь незначительно ухудшилось по сравнению с
обычным чтением с экрана электронной книги. Предъявление же со скоростью
650 слов в минуту снизило понимание с 74,6 % до 52,1 % по сравнению с 250
словами в минуту, что тоже хороший результат.
1.3 НЕДОСТАТКИ
8
2 СОЗДАНИЕ ПРИЛОЖЕНИЯ НА ЯЗЫКЕ PYTHON
9
2.2 ФУНКЦИОНАЛЬНОСТЬ ПРОГРАММЫ
Программа будет открывать файлы формата pdf или txt. С помощью модуля
pdfminer она преобразует файлы pdf в текстовый формат. Далее из полученного
файла удаляются все ненужные символы и знаки препинания, а из оставшихся
слов создается массив, который с помощью модуля pickle загружается в
отдельный файл формата pickle. В свою очередь pickle файлы сохраняются в
папке с программой, и оттуда она их извлекает в виде массива слов, каждый
элемент которого выводится на экран в быстрой последовательности. Скорость
появления слов на экране можно изменить благодаря внутренней задержке в
теле цикла вывода.
Для начала импортируем все нужные для нас библиотеки и модули Kivy
Фреймворка. Они потребуются для реализации GUI.
Листинг 1. Импорт модулей
import pdfminer.high_level
import os
import sys
import pickle
class LoadDialog(FloatLayout):
pass
class Started(Screen):
pass
class Root(Screen):
pass
sm = ScreenManager()
sm.add_widget(Started(name='started'))
sm.add_widget(Root(name='root'))
11
class SpeedYApp(App):
def build(self):
return sm
if __name__ == '__main__':
SpeedYApp().run()
Builder.load_string("""
<Started>:
BoxLayout:
Button:
on_press:
root.manager.transition.duration = 1.4
root.manager.current = 'root'
background_normal: 'Image/speedynormal.png'
background_down: 'Image/speedydown.png'
<Root>:
FloatLayout:
canvas.before:
Color:
12
rgb: 0.94,0.94,0.94
Rectangle:
pos: self.pos
size: self.size
orientation: 'vertical'
Button:
color: 0.94,0.94,0.94,1
on_release: root.show_load()
<LoadDialog>:
BoxLayout:
size: root.size
pos: root.pos
orientation: "vertical"
FileChooserListView:
id: filechooser
BoxLayout:
size_hint_y: None
height: 30
Button:
text: "Cancel"
on_release: root.cancel()
Button:
text: "Load"
13
on_release: root.load(filechooser.path,
filechooser.selection)
def show_load(self):
content = LoadDialog(load=self.load,
cancel=self.dismiss_popup)
self._popup.open()
def dismiss_popup(self):
self._popup.dismiss()
pdfminer.high_level.extract_text_to_fp(file,ff)
14
elif fill[-3::] == 'txt':
with open(fill,'r') as file:
with
open(self.fpath+self.fname+'_speedy'+'.txt','w') as ff:
for line in file:
ff.write(line)
with open(self.fpath+self.fname+'_speedy'+'.txt','r')
as file:
self.words=[]
word=''
for line in file:
for i in line:
if i == '.' or i==' ' or i==',' or i
=='?' or i=='!' or i=='-' or i=='_' or i=='—':
if word!='':
self.words+=[word]
word=''
elif i.isupper():
self.words+=[word]
word=''
word+=i
else:
word+=i
for i in self.words:
if i!='':
self.wordsss+=[i]
with open(self.fpath+self.fname+'.pickle','wb') as
file:
pickle.dump(self.wordsss,file)
os.remove(self.fpath+self.fname+'_speedy'+'.txt')
except UnicodeEncodeError:
pass
self.dismiss_popup()
Создаем текстовое поле для вывода слов. Добавляем кнопки Play, Stop/Start для
запуска и остановки программы, предварительно передав в них запуск функции
с созданием потока. Без использования потока, программа выдаст в текстовое
поле последний элемент массива.
Button:
background_normal: 'Image/play1.png'
background_down: 'Image/play2.png'
on_release: root.upd_ltxt()
Image:
source: 'Image/line.png'
pos: 35, 35
Label:
id: texts
color: 0,0,0,1
halign: 'center'
markup: True
font_size: 30
pos: -40, 35
Button:
16
background_normal: 'Image/stop1.png'
background_down: 'Image/stop2.png'
pos: 358, 36
on_press: root.stop()
def upd_ltxt(self):
self.gtre=0
self.jen=0
self.parts=[]
Thread(target=self.update_label).start()
def stop(self):
if self.gtre==0:
self.gtre=1
elif self.gtre==1:
self.gtre=0
Thread(target=self.update_label).start()
def update_label(self):
self.parts = pickle.load(myfile)
for i in range(self.jen):
self.parts.pop(0)
17
for i in self.parts:
color=i
x = len(color)//2
if len(color)==1 or len(color)==2:
self.ids.texts.text='[color=FF0000]'+color[0:1]+'[/color]'+color[1
:]
if x%2 ==0:
self.ids.texts.text=color[0:x-
1]+'[color=FF0000]'+color[x-1:x]+'[/color]'+color[x:]
else:
self.ids.texts.text=color[0:x]
+'[color=FF0000]'+color[x:x+1]+'[/color]'+color[x+1:]
self.jen+=1
print(self.jen)
sleep(self.count)
if self.gtre==1:
raise TypeError
self.parts=self.parts[1:]
Label:
id: speed
color: 0,0,0,1
font_size: 20
Button:
background_normal: 'Image/plus.png'
background_down: 'Image/downplus.png'
pos: 720, 43
on_release: root.upd_count_plus()
Button:
background_normal: 'Image/minus.png'
background_down: 'Image/downminus.png'
pos: 80, 43
on_release: root.upd_count_minus()
def upd_count_plus(self):
if self.count-0.05555>0.05:
self.count-=0.05
self.wpm+=10
self.ids.speed.text=str(self.wpm)+' wpm'
def upd_count_minus(self):
if self.count+0.05555<1.1:
self.count+=0.05
self.wpm-=10
self.ids.speed.text=str(self.wpm)+' wpm'
19
И последняя функция, которая нам потребуется это функция сохранения
последнего выводимого слова. Ее мы реализуем с помощью сдвига массива и
пересохранения файла.
Button:
color: 0.94,0.94,0.94,1
on_release: root.save()
def save(self):
pickle.dump(self.parts,file)
self.jen=0
20
2.4 ИНТЕРФЕЙС ПРОГРАММЫ
21
Рисунок 2 - Окно вывода текста
22
Рисунок 4 – всплывающее меню для выбора файла
23
- Кнопки управления скоростью вывода слов (Рисунок 6)
26
ЗАКЛЮЧЕНИЕ
В целом, после работы над данным проектом нам удалось улучшить свои
навыки владения программированием, в частности изучить многоцелевой
графический модуль kivy, который имеет широкое применение. Также мы
узнали больше о самом языке программирования и о программном
обеспечении. Не менее важен и опыт создания собственной
27
программы, которая может иметь потенциал в будущем для массового (в т.ч. и
коммерческого) использования.
28
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Иностранная литература.
1. Лутц, М. Изучаем Python, 3 е издание – Пер. с англ. – СПб.: Символ Плюс,
2012. – 848 с., ил.
Интернет-сайты.
5. Kivy Framework /API Reference: [Электронный ресурс]. – Режим доступа:
https://kivy.org/doc/stable/api-index.html
29
9. Информация об ПО, языке Python была взята из Википедии: [Электронный
ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/Заглавная_страница
30