Полная версия
Программирование на Python3 с PyQt5
Вид при использовании QDialog
import sys
from PyQt5 import QtGui
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import *
from PyQt5.uic import loadUi
class Main(QDialog):
def __init__(self):
super(Main, self).__init__()
loadUi('uis/main.ui', self) # загрузка формы в py-скрипт
self.setWindowTitle('Создание простейшей визуальной '
'программы на Python')
self.setWindowIcon(QtGui.QIcon('images/logo.png'))
self.label_img.setPixmap(QPixmap('images/main.png'))
self.label_img.setScaledContents(True)
self.btn_solve.clicked.connect(self.solve) # Связь кнопки с методом
self.btn_clear.clicked.connect(self.clear) # Связь кнопки с методом
self.btn_exit.clicked.connect(self.exit) # Связь кнопки с методом
def solve(self):
a = self.lineEdit_a.text()
b = self.lineEdit_b.text()
x = self.lineEdit_x.text()
if validation_of_data(a, b, x):
a = float(a)
b = float(b)
x = float(x)
if x > 6:
answer = a / x + b / x ** 2
else:
answer = a ** 2 * (x + b)
self.label_answer.setText('Ответ: ' + str(format(answer, '.2f')))
else:
self.label_answer.setText(
'Ошибка!')
def clear(self):
self.lineEdit_a.setText('')
self.lineEdit_b.setText('')
self.lineEdit_x.setText('')
self.label_answer.setText('Ответ: ')
def exit(self):
self.close()
def validation_of_data(a, b, x):
"""
проверяем валидность наших данных, с помощью перехвата исключения
:param a: число, полученное из lineEdit_a
:param b: число, полученное из lineEdit_b
:param x: число, полученное из lineEdit_x
:return: True – прошло валидацию, False – нет
"""
try:
float(a)
float(b)
float(x)
return True
except Exception:
return False
def main():
# каждое приложение должно создать объект QApplication
# sys.argv – список аргументов командной строки
app = QApplication(sys.argv)
window = Main() # базовый класс для всех объектов интерфейса пользователя
window.show() # отобразить окно на экране
sys.exit(app.exec_()) # запуск основного цикла приложения
if __name__ == '__main__':
main()
3.6 Конвертация файла «ui» в скрипт Python
(PyQt5 UI code generator)
pyuic5 name.ui -o name.py
Запускаем из папки с файлом ui в cmd, после чего появляется “py” скрипт в той же папке.
ЛЕКЦИЯ 4 – СПИСКИ, СЛОВАРИ, ЦИКЛЫ И МАССИВЫ
4.1 Списки и кортежи
Список представляет собой упорядоченную последовательность элементов. Он очень гибкий и является одним из самых используемых типов в Python. Элементы списка не обязательно должны быть одного типа.
Объявить список довольно просто. Внутрь квадратных скобок помещаются элементы списка, разделённые запятой:
a = [67, 5, 90, 20, 30]
b = ['Маша', 'Ваня', 'Лена', 'Марина', 'Арнольд']
print(a)
print(b)
aa = a[:] # Автономная копия списка
aaa = list(a) # Автономная копия списка
aaaa = a.copy() # Автономная копия списка
aaa.reverse() # Сортировка списка в обратном порядке
print(a[0]) # Первый элемент 67
print(a[2]) # Третий элемент 90
print(b[1]) # второй элемент Ваня
b.append('Дима') # Добавление элемента в конец списка
print(b[-1]) # Печать последнего элемента Дима
a.sort() # Сортировка списка
print(a) # [5, 20, 30, 67, 90]
print(aa) # [67, 5, 90, 20, 30]
print(aaa) # [30, 20, 90, 5, 67]
print(aaaa) # [67, 5, 90, 20, 30]
[67, 5, 90, 20, 30]
['Маша', 'Ваня', 'Лена', 'Марина', 'Арнольд']
67
90
Ваня
Дима
[5, 20, 30, 67, 90]
[67, 5, 90, 20, 30]
[30, 20, 90, 5, 67]
[67, 5, 90, 20, 30]
Так же как и список, кортеж (tuple) является упорядоченной последовательностью элементов. Вся разница заключается в том, что кортежи неизменяемы. Кортежи используются для защиты данных от перезаписи и обычно работают быстрее, чем списки, т.к. их нельзя изменять.
Для создания кортежа нужно поместить внутрь круглых скобок элементы, разделённые запятой:
t = (5, 'program', 1 + 3j)
print("t[0] =", t[0])
print("t[1] =", t[1])
print("t[2] =", t[2])
for i in t:
print(i, end=" – ")
t[0] = 5
t[1] = program
t[2] = (1+3j)
5 – program – (1+3j) –
Списки имеют большой набор функций:
• append , extend – добавление;
• insert – вставка;
• index – найти индекс первого вхождения конкретного элемента;
• count – подсчет повторов элемента;
• remove , del – удаление элемента;
• sort – сортировка;
• reverse – реверс;
• pop – извлечение элемента;
• len – длина списка;
• max – максимальный элемент;
• min – минимальный элемент;
• оператор in – проверка элемента на вхождение.
4.2 Словари
Структура данных, позволяющая идентифицировать ее элементы не по числовому индексу, а по произвольному, называется словарем или ассоциативным массивом. Соответствующая структура данных в языке Python 3 называется dict.
Каждый элемент словаря состоит из двух объектов: ключа и значения. В примере ниже ключом является название страны, а значением является название столицы. Ключ идентифицирует элемент словаря, значение является данными, которые соответствуют данному ключу. Значения ключей – уникальны, двух одинаковых ключей в словаре быть не может.
# Создадим пустой словарь Capitals
Capitals = dict()
# Заполним его несколькими значениями
Capitals['Russia'] = 'Moscow'
Capitals['Ukraine'] = 'Kiev'
Capitals['USA'] = 'Washington'
Countries = ['Russia', 'France', 'USA', 'Russia']
for country in Countries:
# Для каждой страны из списка проверим, есть ли она в словаре Capitals
if country in Capitals:
print('Столица страны ' + country + ': ' + Capitals[country])
else:
print('В базе нет страны c названием ' + country)
Столица страны Russia: Moscow
В базе нет страны c названием France
Столица страны USA: Washington
Столица страны Russia: Moscow
Методы словарей:
• clear() – очищает словарь;
• copy() – возвращает копию словаря;
• fromkeys(seq[, value]) – создает словарь с ключами из seq и значением value (по умолчанию None);
• get(key[, default]) – возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None);
• items() – возвращает пары (ключ, значение);
• keys() – возвращает ключи в словаре;
• pop(key[, default]) – удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение);
• popitem() – удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены;
• setdefault(key[, default]) – возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ с значением default (по умолчанию None);
• update([other]) – обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!);
• values() – возвращает значения в словаре.
Countries = {'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA': 'Washington', 'Kazakhstan': 'Astana'}
print(Countries)
key1 = 'USA'
key2 = 'us'
if key1 in Countries:
del Countries[key1]
try:
del Countries[key2]
except KeyError:
print('Нет элемента с ключом "' + key2 + '" в словаре')
print(Countries)
{'Ukraine': 'Kiev', 'Russia': 'Moscow', 'Kazakhstan': 'Astana', 'USA': 'Washington'}
Нет элемента с ключом "us" в словаре
{'Ukraine': 'Kiev', 'Russia': 'Moscow', 'Kazakhstan': 'Astana'}
# Преобразование списка-кортеджа в словарь
users = (
("+111123455", "Tom"),
("+384767557", "Bob"),
("+958758767", "Alice")
)
users_dict = dict(users)
print(users)
print(users_dict)
# получаем элемент с ключом "+111123455"
print(users_dict["+111123455"]) # Tom
# установка значения элемента с ключом "+384767557"
users_dict["+384767557"] = "Bob Smith"
print(users_dict["+384767557"]) # Bob Smith
(('+111123455', 'Tom'), ('+384767557', 'Bob'), ('+958758767', 'Alice'))
{'+958758767': 'Alice', '+384767557': 'Bob', '+111123455': 'Tom'}
Tom
Bob Smith
4.2.1 Сортировка словарей
# Пример подсчета одинаковых символов в текстовом файле с использованием словаря
my_dict = dict()
my_text = open(u'D:/text.txt', 'r').read()
for c in my_text:
if c in my_dict:
my_dict[c] = my_dict[c] + 1
else:
my_dict.update({c: 1})
for w in sorted(my_dict, key=my_dict.get, reverse=True):
print(w, my_dict[w])
L 9
o 9
f 8
p 8
4.3 Циклы
mas = ['Ленин', 'Сталин', 'Хрущёв', 'Брежнев', 'Горбачёв', 'Путин']
mas.append('Медведев')
for x in mas:
print('правил ' + x + ' а после него… ')
a = 1
while (a < 5):
print(a, "^ 2 =", a * a, ' ', a ** 2)
a = a + 1
print('Висит груша, нельзя скушать. Что это такое?')
s = ''
while ((s != 'Лампочка') and (s != 'лампочка')):
s = input('Введите ответ и нажмите Enter: ')
print('Вы отгадали загадку!')
правил Ленин а после него…
правил Сталин а после него…
правил Хрущёв а после него…
правил Брежнев а после него…
правил Горбачёв а после него…
правил Путин а после него…
правил Медведев а после него…
1 ^ 2 = 1 1
2 ^ 2 = 4 4
3 ^ 2 = 9 9
4 ^ 2 = 16 16
Висит груша, нельзя скушать. Что это такое?
Введите ответ и нажмите Enter: лампочка
Вы отгадали загадку!
print('Введите стих, отделяя строки нажатием Enter, последней строкой введите слово Конец')
while (True):
s = str(input())
if ((s == 'Конец') or (s == 'конец')):
break
k = 0
for x in s: # Перебор по буквам слова
if (x in 'аеёиоуыэюя'): # Проверка буквы на гласную
k = k + 1
print(k)
Это мой новый стих
5
Красивый и новый
6
Да
1
Конец
month = ["январь", "февраль", 'март', 'апрель']
print(month[0]) # январь
print(month[0:2]) # ['январь', 'февраль']
print('Как прекрасны месяцы', " и ".join(month), "!") # Как прекрасны месяцы январь и февраль и март и апрель !
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.