Идём к заветному званию Junior. Продолжаем исследовать возможности Python
- Индекс строки
- Индекс имеет тоже строковый тип данных (str)
- Срезы строки
- Срезать можно не только по числовым значениям. Если вы передали значение в переменную, например love = morsik.find [i love], а в другую hate = morsik.find [i hate], то в другую переменную можно записать диапазон life = [love:hate], т.е. он выведет весь кусок от слов i love до слов i hate
- Функции и методы
- Форматирование строк
- Списки. Кортежи
- Методы списка
- Другие методы можно посмотреть в документации или на pythonworld.ru
- Оператор In
- Не забывайте, что найти элемент можно с помощью параметра find. Например, if name.find (‘Mors’) != -1, print (‘есть’). Но гораздо удобней просто написать if ‘mors’ in name
- Кортеж (Turle)
- Последовательности. Цикл For in. While или For?
- Функция range
- Параметры range
- Запомним: For — перебор последовательности без индекса, for range — перебор последовательности с индексом или нужно пропустить некоторые элементы, while — проверка условия, без последовательности.
- Словари (dict)
- Перебор словаря циклом for
- Множество (set)
Индекс строки
Как мы уже знаем, чтобы создать переменную строкового типа, нам нужно написать её в одинарных или в двойных кавычках (допустимы оба варианта). Например name =’Морсик’ или name = «Морсик». Так же можно получить любой символ в строке, обратившись к его индексу. Индексы в питоне, как и в других языках, начинают исчисление с нуля. Но в питоне, в отличие от того же C#, можно использовать отрицательный индекс (тогда отчет пойдет с конца строки)
[code]
my_girl = ‘Попкикс’
first = my_girl[0]
print(‘Первая буква в имени моей девушки:’,first)
last = my_girl [-1]
print(‘Последняя буква в имени моей девушки:’,last)
[/code]
Индекс имеет тоже строковый тип данных (str)
Срезы строки
Срезы позволяют получить несколько символов в строке, её часть. Диапазон задается двумя индексами. Т.е. вид будет name = [start:end], где старт — индекс начала среза, end — индекс конца среза (с какого по какой). Можно оставлять какой-то из них пустой, тогда отчет пойдет с начала или с конца строки. Тип данных среза тоже str (строка)
[code]
my_girl = ‘Попкинкс’
print(my_girl[:5]) # с начала строки до 5 элемента (или с нулевого индекса — можно записать как [0:5])
print(my_girl[4:5]) # С четвертого элемента по пятый (всего одна буква, т.к. ДО пятого, т.е. один четвертый)
print(my_girl[3:]) # С третьего элемента до конца строки
[/code]
Срезать можно не только по числовым значениям. Если вы передали значение в переменную, например love = morsik.find [i love], а в другую hate = morsik.find [i hate], то в другую переменную можно записать диапазон life = [love:hate], т.е. он выведет весь кусок от слов i love до слов i hate
Функции и методы
Так же для строки можно использовать фунцию len, которая узнает её длину и некоторые методы, которые позволяют нам работать со строковыми типами данных. Функции пишем с скобочках. Методы вызываем через точку.
len (morsik) — длина строки
morsik.find (‘m’) — ищет символ m в строке
morsik.splt — разделение строки через пробел
morsik.isdigit — проверяет, что у нас строка состоит только из чисел
Посмотрим как они работают:
[code]
my_girl = ‘Попкинкс Жопкинс’
print(len(my_girl)) # считает количество символов. Пробел между словами тоже считается за символ
# если такого отрезка нет в строке, то программа вернет нам «-1»
print (my_girl.find(‘Жоп’)) # Ищет кусок «Жоп» в строке. Результат показывает с какого индекса начинается эта фраза в строке
# Если никакие параметры не передавать, то split будет разбивать строку на части через пробел
# Но можно указать и свой разделитель
print (my_girl.split()) # Результатом команды будет Список.
print (my_girl.isdigit()) # Ответом будет логическое выражение (true или false). В нашес случае — false
[/code]
Форматирование строк
Функция строки format отвечает за форматирование строки, когда нам нужно вывести какие-то данные, не прибегая к конкатенации (методом «плюса»). Формат просто добавляется в конце строки и перечисляются все переменные, которые должны были туда войти (предварительно мы расставили в выводе фигурные скобки там, где нужно вставить переменные)
[code]
my_girl = ‘Попкинкс Жопкинс’
my_girl2 = ‘Морсик Коржик’
print(‘Мою девушку можно назвать {}, а можно и {}’. format(my_girl,my_girl2))
[/code]
Списки. Кортежи
Список (list) — это действительно список, который содержит в себе изменяемые объекты любого типа данных. Записывается через квадратные скобки:
my_list_1 = [2, 5, 8, 2, 12, 12, 4, true, ‘строка’]
Можно объявить пустой список, чтобы потом внести туда данные. Записывается с пустыми скобками. Тип списка — класс list
my_list_empty = []
<class ‘list’>
Список, как и строку можно перебирать по элементам, только возвращать программа будет не символ, а элемент списка:
print (mylist [0]) # вернет первый элемент списка
print (mylist [-1]) # вернет последний элемент списка
Можно применять и срезы. Тип данных при этом останется list
print (mylist [1:5]) # вернет элементы с первого по пятый
Методы списка
Как и в строке, в списке есть свои методы:
len (spisok) — возвращает длину списка
spisok.append (‘Morsik’) — добавляет в список элемент Morsik
spisok.remove (‘Morsik’) — удаляет из списка элемент Morsik (удаляет по значению)
spisok.pop () — удаляет последний элемент со списка (выводит на экран при print)
del spisok [0] — удаляет первый элемент в списке (удаляет по индексу)
spisok.clear () — очищает весь список
Другие методы можно посмотреть в документации или на pythonworld.ru
Оператор In
Данный оператор позволяет проверить наличие элемента в вашем списке.
‘Morsik’ in my_list
Результатом будет логическое выражение (true или false). Тип данных: bool. Строки тоже можно проверять оператором in на наличие элемента в строке
‘M’ in ‘Morsik’
Не забывайте, что найти элемент можно с помощью параметра find. Например, if name.find (‘Mors’) != -1, print (‘есть’). Но гораздо удобней просто написать if ‘mors’ in name
Кортеж (Turle)
Кортеж это тот же список (list), но в turple изменять элементы уже нельзя. Записывается в круглых скобках
my_girl (‘Morsik’, ‘Korzhik’, ‘Mostik’)
Последовательности. Цикл For in. While или For?
Это некий контейнер, где содержится последовательности их из каких-либо элементов. Для последовательностей можно применить цикл for in. Много вопросов связанных с тем, что лучше использовать: когда лучше while, когда лучше for.
Цикл for используется, когда у вас известно количество шагов в цикле (количество его итераций). Цикл while используется, когда мы этого не знаем — мы не знаем, когда у нас выполнится условие цикла, чтобы он завершился. while подходит для проверки каких-либо условий. for — для перебора элементов с заранее известным количеством этих самых элементов.
Вот как решается одна и та же задача разными циклами:
[code]
my_girl = [‘Morsik’, ‘Korzhik’, ‘Mostik’]
#while
i = 0
while i < len(my_girl):
my_girls = my_girl[i] print(my_girls)
i += 1
#for
for my_girl_1 in my_girl: #записываем в переменную my_girl_1 все элементы списка my_girl
print(my_girl_1)
[/code]
Функция range
Эта функция создает последовательность целых чисел. Работает в связке с циклом for. Если мы используем range для какой-либо переменной, тип у переменной будет range (по-простому — диапазон). Если мы просто присвоим переменной результат функции range, то через print мы увидим диапазон чисел, а не сами числа. Чтобы вывести все числа, нужно привести переменную в тип «Список» (list).
[code]
morsik = range(25)
print (morsik)
print (list(morsik))
[/code]
Параметры range
У функции range есть свои параметры, которые тоже можно использовать в коде: Начало или конец последовательности, конец последовательности и её шаг. Записывается это так:
range (start_or_end, end, step)
[code]
numbers = [1,3,5]
for number in numbers:
print (number)
print (list(range(1, 1000, 2))) # начинаем с единицы, доходим до 1000, шаг составляет 2
for number in range(1, 1000, 2): # использование range в цикле
print(number)
[/code]
Запомним: For — перебор последовательности без индекса, for range — перебор последовательности с индексом или нужно пропустить некоторые элементы, while — проверка условия, без последовательности.
Словари (dict)
Словарь в Питоне — это список неупорядоченных объектов с доступом по ключу. Словарь объявляется фигурными скобками {}, где указываем ключи и присваиваем им определенные значения:
my_dict {ключ1=значение1, ключ2=значение2}
Соответственно, основные действия со словарем это:
Получение элемента по ключу словаря — names_of_my_girl[morsik]
Добавление элемента в словарь — names_of_my_girl[korzhik] = ‘Korzhik’
Изменение элемента в словаре — names_of_my_girl[korzhik] = ‘Ne korzhik’
Удаление элемента со словаря — remove names_of_my_girl[korzhik]
Оператор in — in korzhik in names_of_my_girl
Рассмотрим их все на примере:
[code]
names_of_my_girl = {
‘first_name’ :’Morzhik’,
‘second_name’:’Korzhik’,
‘third_name’:’Popkins’
}
print (names_of_my_girl) # выводим словарь
print (type(names_of_my_girl)) # выводим тип переменной — это у нас словарь, т.е. dict
# теперь обратимся к конкретному ключу из словаря
print(‘Второе имя моей девушки — ‘, names_of_my_girl [‘second_name’])
# теперь добавим в словарь ключ и присвоим ему значение
names_of_my_girl [‘age’] = 25
print(‘Ей’, names_of_my_girl[‘age’], ‘лет’)
print(names_of_my_girl) # проверяем, что ключ попал в словарь
[/code]
Кстати, именно словарем решается одна из часто встречающихся задачек на питоне «Вывести дату в текстовом виде
[code]
date = input (‘Введите дату в формате dd.mm.yyyy: ‘) # пользователь вводит дату
new_date = (date.split(‘.’)) # кортеж new_date, разделитель — точка
day = {’01’:’первое’, # словарь дней
’02’:’второе’,
’03’:’третье’,
’04’:’четвертое’,
’05’:’пятое’,
’06’:’шестое’,
’07’:’седьмое’,
’08’:’восьмое’,
’09’:’девятое’,
’10’:’десятое’,
’11’:’одинадцатое’,
’12’:’двенадцатое’,
’13’:’тринадцатое’,
’14’:’четырнадцатое’,
’15’:’пятьнадцатое’,
’16’:’шестьнадцатое’,
’17’:’семнадцатое’,
’18’:’восемнадцатое’,
’19’:’девятнадцатое’,
’20’:’двадцатое’,
’21’:’двадцать первое’,
’22’:’двадцать второе’,
’23’:’двадцать третье’,
’24’:’двадцать четвертое’,
’25’:’двадцать пятое’,
’26’:’двадцать шестое’,
’27’:’двадцать седьмое’,
’28’:’двадцать восьмое’,
’29’:’двадцать девятое’,
’30’:’дридцатое’,
’31’:’тридцать первое’}
month = {’01’:’января’, # словарь месяцев
’02’:’февраля’,
’03’:’марта’,
’04’:’апреля’,
’05’:’мая’,
’06’:’июня’,
’07’:’июля’,
’08’:’августа’,
’09’:’сентября’,
’10’:’октября’,
’11’:’ноября’,
’12’:’декабря’}
print(‘Сейчас {} {} {} года.’.format(day[new_date[0]], (month[new_date[1]]), new_date[2]))
[/code]
Перебор словаря циклом for
Вариантов перебора словаря может быть несколько: по ключу, по значению, либо сразу по ключу или значению
[code]
names_of_my_girl = {
‘first_name’ :’Morzhik’,
‘second_name’:’Korzhik’,
‘third_name’:’Popkins’
}
for key in names_of_my_girl.keys():
print(key) # печатает ключи
print(names_of_my_girl[key]) # печатает ключи со значениями
for val in names_of_my_girl.values():
print (val)# печатает значение
for key, val in names_of_my_girl.items():
print(key)
print(val)
[/code]
Множество (set)
Тип set или множество в питоне — это коллекция, которая содержит в себе только неповторяющиеся элементы. Объявляется так как и словарь (dict), но в нем нет пар ключ=значение, а только значение
my_girl = {‘mors’, ‘korzh’,’popkins’}
Если привести значение списка к set, то из него пропадут дубли. Для множества тоже есть свои действия, которые похожи на те, что мы изучали ранее
Добавление элемента во множество — my_girl.add (‘Keksik’)
Удаление элемента из множества — my_girl.remove (‘Keksik’)
Длина множества len
Работа с операторами in и циклом for
Объединение или пересечение множеств
Объединение обозначается |
Пересечение &
Вычитание —
Как это выглядит:
[code]
my_girl = {‘mors’, ‘korzh’,’popkins’}
print(my_girl)
my_girl.add(‘mosik’)
my_girl.remove (‘mors’)
print(my_girl)
print(len(my_girl))
for items in my_girl:
print(items)
# операции со множествами
morsik = {‘Виски’, ‘Шампанское’, ‘Кола’, ‘Сок’} # множество морсика
korzhik = {‘Виски’, ‘Ягер’, ‘Кола’, ‘Пиво’} # множество морсика
# всё бухлишко
print (morsik | korzhik) # элементы в множестве не повторяются!
# одинаковое бухлишко
print( morsik & korzhik) # пересечение
# какое бухлишко есть у морсика, но нет у коржика
print( morsik — korzhik)
[/code]