Программирование на Python3 с PyQt5

Сергей Николаевич Талипов, 2020

Основы программирования на Python3 с визуальными компонентами PyQt5 (для PyCharm Community).

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Программирование на Python3 с PyQt5 предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

ЛЕКЦИЯ 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),"!") # Как прекрасны месяцы январь и февраль и март и апрель!

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Программирование на Python3 с PyQt5 предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я