Python урок 5. немного о строках. срезы

Проверка есть ли символ в строке

Самые смекалистые могли заметить, что обращение к найденному индексу – это не единственная особенность метода find. С помощью него разработчик также может проверить наличие подстроки в переменной. Это действительно так.

Достаточно сделать условие: если find вернул отрицательное число, значит нужной подстроки нет, иначе есть. Однако, это нерационально. Для таких случаев в python предусмотрено ключевое слово «in».

Чтобы проверить, есть ли подстрока в строке необходимо использовать следующий синтаксис:

Если word есть в string, то x присвоится True, иначе False. Рассмотрим на реальном примере:

Как вы уже догадались, первый вывод будет True, а второй False. Так что на будущее: не придумывайте велосипед, если есть готовая замена.

Метод str.find()

Этот метод просто необходим, если вам нужно найти индексы совпадений подстроки в строке. Если данные вы не нашли, то метод возвратит -1. Данная функция может принимать такие параметры: substring (символ/подстрока) – это необходимая для вас подстрока; start – первый индекс со значением 0; end – индекс, который заканчивает отыскивание нужной подстроки.

С помощью метода find() вы можете находить необходимые индексы первого вхождения подстроки в последовательности (строке).

Пример кода:

my_question="Когда пары?"
print("Индекс буквы ‘р’:", string.find("0"))

Вывод программы:

Индекс буквы 'р': 8

Создание строки

Строки (strings) используются для хранения текстовых данных. Их создание возможно одним из 3-х способов. Тут все просто, т. к. возможно применение разных кавычек: одинарных, двойных либо тройных. То есть в эти кавычки и нужно обернуть текст:

Кавычки в данном случае — это строковые литералы, позволяющие создавать в памяти программы Python объект типа string.

Нужно понимать, что разницы, какие именно кавычки использует разработчик, нет. Главное — открывающие и закрывающие кавычки должны быть однотипными. Если же поставить вначале одинарную кавычку, а в конце двойную — ошибки не избежать.

Можно ли применять кавычки внутри строк?

Можно, для чего есть несколько вариантов. Один из них — использовать внутри строки кавычки другого типа. К примеру, наружные кавычки являются двойными, а внутренние — одинарными. Или наоборот:

Второй метод — экранирование. Для экранирования используется обратный слэш. Вот, как это выглядит в коде:

У тройных кавычек есть особенности. Заключенные в них строки поддерживают многострочность, то есть для переноса не нужен символ \n. А еще внутри тройных кавычек можно вставлять как двойные, так и одинарные кавычки:

Вывод будет следующим:

Строки являются неизменяемыми объектами (как и числа). В этом легко убедиться, если создать переменные с одинаковыми именами, а потом вывести на экран их id — идентификаторы будут различаться:

Рекомендуется повторить вышеописанные операции самостоятельно и попрактиковаться. Сделать это можно, даже не устанавливая «Пайтон», используя любой онлайн-компилятор.  

Возврат нескольких значений из одной функции

В Python существует возможность возвращать из функции несколько значений.

Вот простой пример:

def f():
    a = 5
    b = 6
    c = 7
    return a, b, c
var1, var2, var3 = f()

print("var1={0} var2={1} var3={2}".format(var1, var2, var3))

Результат:

var1=5 var2=6 var3=7

В анализе данных и других научных приложениях это встречается сплошь и рядом, потому что многие функции вычисляют несколько результатов.

На самом деле, функция возвращает только один объект, кортеж, который затем распаковывается в результирующие переменные.

Этот пример можно было бы записать и так:

def f():
    a = 5
    b = 6
    c = 7
    return a, b, c
return_value = f()

print(return_value)

Результат:

(5, 6, 7)

В таком случае return_value было бы кортежем, содержащим все три возвращенные переменные.

Иногда разумнее возвращать несколько значений не в виде кортежа, а в виде словаря:

def f():
    a = 5
    b = 6
    c = 7
    return {'a' : a, 'b' : b, 'c' : c}

return_value = f()

print(return_value)

Результат:

{'a': 5, 'b': 6, 'c': 7}

Обязательные (позиционные) аргументы

Обязательные аргументы — это аргументы, переданные функции в правильном позиционном порядке. Здесь количество аргументов и их порядок в вызове функции должно точно соответствовать определению функции.

Чтобы вызвать функцию printme() , вам обязательно нужно передать один аргумент, иначе она выдаст следующую синтаксическую ошибку:

# Определение функции
def printme( str ):
   """This prints a passed string into this function"""
   print(str)
   return

# Теперь вы можете вызвать функцию printme
printme()

Ошибка (в функции Printme не указан аргумент):

Traceback (most recent call last):
  File "C:/Users/User/Desktop/CodePythonFunc.py", line 8, in <module>
    printme()
TypeError: printme() missing 1 required positional argument: 'str'

Правильно указать аргумент так:

# Определение функции
def printme( str ):
   """This prints a passed string into this function"""
   print(str)
   return

# Теперь вы можете вызвать функцию printme
printme("Текстовая переменная")

Циклы

9.1 Циклы по спискам

Если нам необходимо в цикле пройти по всем элементам списка, то хорошим тоном (да и более читаемым) будет такой способ:

Хорошо

И хотя бывалые программисты или просто любители C могут использовать и такой код, это моветон.

Плохо

А если нужно пройти по списку задом наперед, то лучше всего использовать метод reversed:

Хорошо

Вместо того чтобы писать избыточный код, который и читается-то не очень внятно.

Плохо

9.2 Циклы по списку чисел

Если есть необходимость пройти в цикле по ряду чисел, то метод range будет намного приемлемее, как минимум потому, что этот метод потребляет намного меньше памяти, чем вариант в блоке «Плохо». А представьте, что у вас ряд из трёх миллиардов последовательных чисел!

Хорошо

Плохо

9.3 Циклы по спискам с индексами

Метод enumerate позволяет получить сразу индекс и значение из списка, что, во-первых, предоставляет множество возможностей для дальшнейшего проектирования, а во-вторых, такой код легче читается и воспринимается.

Хорошо

Плохо

Практическая работа

  1. Вводится строка, включающая строчные и прописные буквы. Требуется вывести ту же строку в одном регистре, который зависит от того, каких букв больше. При равном количестве преобразовать в нижний регистр. Например, вводится строка «HeLLo World», она должна быть преобразована в «hello world», потому что в исходной строке малых букв больше. В коде используйте цикл , строковые методы (преобразование к верхнему регистру) и (преобразование к нижнему регистру), а также методы и , проверяющие регистр строки или символа.

  2. Строковый метод проверяет, состоит ли строка только из цифр. Напишите программу, которая запрашивает с ввода два целых числа и выводит их сумму. В случае некорректного ввода программа не должна завершаться с ошибкой, а должна продолжать запрашивать числа. Обработчик исключений try-except использовать нельзя.

Открытие и закрытие файла

Для открытия файла используется функция open(), которая возвращает файловый объект. Наиболее часто используемый вид данной функции выглядит так open(имя_файла, режим_доступа).

Для указания режима доступа используется следующие символы:

‘r’ – открыть файл для чтения;

‘w’ – открыть файл для записи;

‘x’ – открыть файл с целью создания, если файл существует, то вызов функции open завершится с ошибкой;

‘a’ – открыть файл для записи, при этом новые данные будут добавлены в конец файла, без удаления существующих;

‘b’ – бинарный режим;

‘t’ – текстовый режим;

‘+’ – открывает файл для обновления.

По умолчанию файл открывается на чтение в текстовом режиме.

У файлового объекта есть следующие атрибуты.

file.closed – возвращает true если файл закрыт и false в противном случае;

file.mode – возвращает режим доступа к файлу, при этом файл должен быть открыт;

file.name – имя файла.

>>> f = open("test.txt", "r")
>>> print("file.closed: " + str(f.closed))
file.closed: False
>>> print("file.mode: " + f.mode)
file.mode: r
>>> print("file.name: " + f.name)
file.name: test.txt

Для закрытия файла используется метод close().

Что такое строка в Python?

Строка в Python — это обычная последовательность символов (букв, цифр, знаков препинания).

Компьютеры не имеют дело с символами, они имеют дело с числами (в двоичной системе). Даже если вы видите символы на вашем экране, внутри памяти компьютера он хранится и обрабатываются как последовательность нулей и единиц.

Преобразование символа в число называется кодированием, а обратный процесс — декодированием. ASCII и Unicode — наиболее популярные из кодировок, которые используются для кодирования и декодирования данных.

В Python, строка — это последовательность символов Unicode. Юникод был введен для включения каждого символа на всех языках и обеспечения единообразия в кодировании.

Переменные

Переменная — это отведенное имя в памяти компьютера для хранения данных, у которого есть имя. Переменные — это контейнеры, в которых хранятся данные, которые можно изменить или использовать позже в программе. Например:

С помощью этой инструкции мы создали переменную и присвоили ей значение .

Значения переменной можно менять по ходу программы.

Изначально значение переменной было равно . А потом мы изменили его на .

Присваивание значений переменным

Для присваивания значений переменным в Python существует специальный оператор присваивания . Вы могли догадаться об этом из прошлого примера.

Вывод:

codechick.io

В приведенной выше программе мы сначала присвоили значение переменной , а затем напечатали значение переменной , т.е. вывели на экран строку .

Вывод:

codechick.ioaskmentor.io

В приведенной выше программе сначала мы присвоили значение переменной . А потом изменили значение этой переменной на .

Если мы хотим присвоить одно и то же значение нескольким переменным одновременно, можно сделать это следующим образом:

Эта программа присваивает переменным , , значение и выводит все три переменные на экран.

Повторение строк

Однажды у вас могут возникнуть обстоятельства, при которых вы захотите использовать Python для автоматизации некоторых задач. И одной из таких задач может стать многократное повторение строки в тексте. Для того чтобы это осуществить, потребуется воспользоваться оператором , который, как и оператор , отличается от . При использовании с одной строкой и одним числом становится оператором повторения, а не умножения. Он лишь повторяет заданный текст указанное число раз.

Давайте выведем на экран 9 раз с помощью оператора .

print("Sammy" * 9)

SammySammySammySammySammySammySammySammySammy

Таким образом, с помощью оператора повторения мы можем сколь угодно клонировать нужный нам текст.

Полезные константы строкового модуля

Пайтона модуль предоставляет константы для операций , связанных строк. Для того, чтобы использовать их, импортировать модуля:

Стечение и :

Содержит все символы нижнего регистра ASCII:

Содержит все символы ASCII в верхнем регистре:

Содержит все десятичные цифры:

Содержит все шестнадцатеричные символы:

Содержит все восьмеричные символы:

Содержит все символы , которые считаются знаки препинания в локали:

Содержит все символы ASCII, которые считаются пробелами:

В режиме сценария, напечатает фактические символы, используйте , чтобы получить вернулся выше строка.   :

Содержит все символы, которые считаются печатными; сочетание , , и .

5.1.2. Функции в Python¶

В Python нет формального разделения подпрограмм на функции и процедуры (как, например, в Паскале или Си), и процедурой можно считать функцию, возвращающую пустое значение — в остальном используется единственный термин — функция.

def

Для объявления функции в Python используется ключевое слово :

def function_name():  # `parameters`: параметры функции (через запятую)
    suite                         # Тело функции

На имя функции в Python накладываются такие же ограничения, как и на прочие .

Примечание

PEP8.

Соглашение рекомендует использовать:

  • змеиный_регистр (англ. snake_case) для наименования функций: ;

  • пустые строки для отделения функций, а большие блоки кода помещать внутрь функций;

return

Функция в Python может возвращать результат своего выполнения, используя оператор (например, ). В случае, если он не был указан или указан пустой оператор , возвращается специальное значение .

Примечание

При встрече оператора в коде Python немедленно завершает выполнение функции, аналогично для циклических конструкций.

Пример определения и вызова функции приведен в Листинге 5.1.1 и на Рисунке 5.1.1.

Листинг 5.1.1 — Пример определения и вызова функции |

# Функция для вычисления гипотенузы
# Имя: hypot, 2 параметра: x, y
# return возвращает результат работы функции вызвавшему
def hypot(x, y):
    return (x**2 + y**2)**0.5

z = hypot(3, 4)  # Передача в функцию 2-х аргументов: 3 и 4
print(z)  # 5.0

a = 5
b = 12
print(hypot(a, b))  # 13.0 - результат функции может быть использован сразу

Рисунок 5.1.1 — Передача параметров и возвращение результата функции

Python, как и многие другие языки, позволяет создавать собственные (пользовательские) функции, среди которых можно выделить четыре типа (Листинг 5.1.2):

  1. Глобальные

  2. Локальные (вложенные)

  3. Методы

Переменные

Переменные — важное понятие в программировании. Переменная — это не более чем имя для чего-то, чтобы использовать его позднее

Программисты используют переменные для хранения данных, чтобы их код был более читабельным, и для того, чтобы им не пришлось запоминать что есть что.

Допустим, мы хотим создать новую переменную с именем :

Видишь? Это очень легко! Просто введи: name равно Ola.

Как ты уже заметила, твоя программа не возвращает ничего, как было ранее. Так откуда мы знаем, что переменная действительно существует? Просто введи и нажми :

Ура! Твоя первая переменная:)! Ты всегда можешь изменить то, к чему она относится:

Ты можешь использовать их также и в функциях:

Круто, правда? Переменными, конечно, может быть что угодно, и цифры тоже! Попробуй следующее:

Но что делать, если мы использовали неправильное имя? Можешь догадаться, что произойдет? Давай попробуем!

Ошибка! Как ты можешь видеть, в Python есть различные типы ошибок, эта называется NameError. Python выдаст эту ошибку при попытке использовать переменную, которая пока не определена. При возникновении этой ошибки проверь свой код, чтобы узнать, не написала ли ты неправильно имя переменной.

Попрактикуйся в этом какое-то время и посмотри, что ты сможешь сделать!

Форматирование строк в Python

Экранирование символов

Если внутри строки содержатся символы одинарной и двойной кавычки, то вне зависимости от того, какие кавычки мы использовали для создания строки — мы получим ошибку SyntaxError.

>>> print("She said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('She said, "What's there?"')
...
SyntaxError: invalid syntax

Один из способов обойти эту проблему — использовать тройные кавычки. В качестве альтернативы мы можем использовать escape-последовательности или так называемое «экранирование символов».

Экранирующая последовательность начинается с обратной косой черты. Если мы используем одинарную кавычку для представления строки, все одинарные кавычки внутри строки должны быть экранированы. Аналогично обстоит дело с двойными кавычками. Вот как это можно сделать для представления приведенного выше текста.

# Тройные кавычки
print('''He said, "What's there?"''')

# Экранирование одинарных кавычек
print('He said, "What\'s there?"')

# Экранирование двойных кавычек
print("He said, \"What's there?\"")

Использование метода format() для форматирования строк

Метод format(), доступный для строкового объекта, очень универсален и мощен в форматировании строк. Формат строки содержит фигурные скобки {} в качестве заполнителей или заменяющих полей, которые заменяются соответствующими значениями.

Мы можем использовать позиционные аргументы или ключевые аргументы, чтобы указать порядок.

# порядок по умолчанию
default_order = "{}, {} and {}".format('John','Bill','Sean')
print(default_order)

# порядок задается вручную
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print(positional_order)

# порядок задается аргументами
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print(keyword_order)

Метод format() может иметь необязательные спецификации формата. Они отделены от имени поля двоеточием. Например, мы можем выравнивать по левому краю <, выравнивать по правому краю > или центрировать ^ строку в заданном пространстве. Мы также можем отформатировать целые числа как двоичные, шестнадцатеричные и т.д., а числа с плавающей точкой могут быть округлены или отображены в формате экспоненты. Существует множество форматов, которые вы можете использовать. Более подробно про метод format() можно почитать в официальной документации к языку.

>>> # форматирование целых чисел
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'

>>> # форматирование чисел с плавающей запятой
>>> "Exponent representation: {0:e}".format(1566.345)
'Exponent representation: 1.566345e+03'

>>> # округление
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'

>>> # выравнивание строки
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter | bread | ham|’

Твоя первая команда Python!

После запуска Python, консоль изменилась на . Для нас это означает, что сейчас мы можем использовать только команды на языке Python. Тебе не нужно вводить — Python будет делать это за нас.

Если ты хочешь выйти из консоли Python, в любой момент — просто введи или используй сочетание клавиш для Windows и для Mac/Linux. Тогда ты больше не будешь видеть .

Пока что мы не хотим выходить из консоли Python. Мы хотим узнать больше о ней. Давай начнём с чего-нибудь совсем простого. Например, попробуй набрать простое математическое выражение, вроде и нажми .

Прекрасно! Видишь, как выскочил ответ? Python знает математику! Ты можешь попробовать другие команды, такие как: — — —

Поиграй с этим немного и затем вернись сюда :).

Как видишь, Python является прекрасным калькулятором. Если тебе интересно, что еще можно сделать…

Поиск символа или подстроки в строке

У нас есть последовательность букв английского алфавита, но только в этой последовательности не все буквы, а потому вручную указать индекс не получится. Необходимо по введенной букве, определить ее индекс и вывести все буквы после этого индекса. И так, как будет выглядеть решение:

Готово. Если бы не find, тогда разработчику пришлось бы создавать цикл while с счетчиком, сверять каждый элемент с введенным пользователем, а после, если символ был найден, выводить его индекс, который находился в счетчике. Не совсем удобно, потому рекомендуем пользоваться только готовой функцией.

Как мы видим, программа работает как часы

А если вспомнить, что с помощью циклов будет проблематично проверить подстроку, то это еще сильнее повышает любовь к встроенным функциям типа этой.

Кстати, давайте попробуем искать не по символу, а по подстроке. Сразу пример из жизни: вспомните школьные года, когда на некоторых предметах было деление по группам. Представим, что необходимо вывести две части строки.

Первая часть – это первая группа, а вторая – вторая группа. Разделять их будет введённое имя.

Реализация (не забывайте, регистр важен):

и снова результат на картинке ниже.

Результат выполнения программы

Невероятно крутой инструмент, и при этом простой в исполнении.

Методы строк

join(str)Соединение строк из последовательности str через разделитель, заданный строкой

s="hello"
s1="-".join(s)
s1 # 'h-e-l-l-o'

s1.count(s) — количество вхождений подстроки  в строку . Результатом является число. Можно указать позицию начала поиска i и окончания поиска j:

s1="abrakadabra"; s1.count('ab') # 2
s1.count('ab',1) # 1
s1.count('ab',1,-3) # 0 , т.к. s1='brakada'

s1.find(s) — определяется позиция первого (считая слева) вхождения подстроки  в строку . Результатом является число.  и определяют начало и конец области поиска:

s1="abrakadabra"; s1.find('br') # 1

s1.replace(s2,s3) — создаётся новая строка, в которой фрагмент (подстрока)  исходной строки заменяется на фрагмент . Необязательный аргумент  указывает количество замен:

s1="breKeKeKeKs"; ss=s1.replace('Ke','XoXo',2) 
ss # breXoXoXoXoKeKs

Задание Python 5_5: Преобразовать дату в «компьютерном» представлении (системную дату: 2016-03-26) в «российский» формат, т. е. день/месяц/год (например, 26/03/2016). Известно, что на год выделено всегда 4 цифры, а на день и месяц – всегда 2 цифры.

Примечание:

  • Использовать строковые функции языка и срезы.
  • Функциями работы с датами и временем «заведует» в Python datetime модуль, а непосредственно для работы с датами используется объект date и его методы.

Подсказка:

from datetime import date
# Получаем текущую дату
d1=date.today()
# Преобразуем результат в строку
ds=str(d1)

Задание Python 5_6:
Ввести адрес файла и «разобрать» его на части, разделенные знаком ‘/’. Каждую часть вывести в отдельной строке.

Например: c:/изображения/2018/1.jpg
Результат:

c:
изображения
2018
1.jpg

Задание Python 5_7:
Ввести строку, в которой записана сумма натуральных чисел, например, ‘1+25+3’. Вычислите это выражение. Использовать строковые функции языка.

Задание Python 5_8: Определить, является ли введённая строка палиндромом («перевёртышем») типа ABBA, kazak и пр.

Примечание:

если , то

Для решения используйте алгоритм, изображенный на блок-схеме:

А форматирование строк?

Типичная жизненная необходимость — сформировать строку, подставив в неё результат работы программы. Начиная с Python 3.6, это можно делать при помощи f-строк:

В более старом коде можно встретить альтернативные способы

Технически можно было обойтись склейкой, но это менее элегантно, а еще придётся следить, чтобы все склеиваемые кусочки были строками. Не рекомендую:

***

Цель работодателя на собеседовании — убедиться что вы соображаете и что вы справитесь с реальными задачами. Однако погружение в реальные задачи занимает несколько недель, а время интервью ограничено. Поэтому вас ждут учебные задания, которые можно решить за 10-30 минут, а также вопросы на понимание того, как работает код. О них и поговорим в следующей части.

Списки

Помимо строк и целых чисел Python имеет богатую коллекцию других типов объектов. Сейчас мы собираемся представить тебе один из них — list (список). Списки — это именно то, о чем ты подумала: объекты, которые являются списками других объектов :)

Давай начнем с создания списка:

Отлично, это пустой список. Не особенно полезен, да? Давай создадим список лотерейных номеров. Мы не хотим повторять их каждый раз, так что присвоим список переменной:

Замечательно, у нас есть список! Что мы можем с ним сделать? Для начала посмотрим как много лотерейных номеров в нашем списке. Есть идеи какую функцию можно использовать для этого? Ты её уже знаешь!

Точно! вернет тебе количество объектов в списке. Удобно, правда? Может быть мы теперь отсортируем его:

Эта команда не возвращает ничего, она просто меняет порядок номеров в списке. Давайте выведем его на экран и посмотрим что получилось:

Как видишь, номера в списке теперь отсортированы от меньшего к большему. Поздравляем!

Может быть нам нужно изменить порядок? Давай сделаем это!

Просто, правда? Если хочешь добавить что-то к своему списку, то можешь воспользоваться этой командой:

Если ты хочешь получить первый номер в списке, то можешь воспользоваться индексами. Индекс это номер позиции в списке, на котором находится нужное нам значение. Программисты предпочитают начать считать с 0, так что первому объекту в списке соответствует индекс 0, следующему —1, и так далее. Попробуй ввести:

Как видишь, ты можешь обратиться к различным объектам в своем списке используя имя списка и индекс объекта в квадратных скобках.

Чтобы удалить что-либо из списка, тебе понадобятся индексы, с которыми мы уже разобрались выше, и команда . Давай попробуем закрепить пройденное примером; мы будем удалять первый элемент из нашего списка.

Сработало как заклинание!

В качестве дополнительной тренировки попробуй следующие индексы: 6, 7, 1000, -1, -6 и -1000. Сможешь предсказать результат? Видишь логику работы?

Ты можешь найти перечень всех методов, относящихся к списку, в этой главе официальной документации Python: https://docs.python.org/3/tutorial/datastructures.html

Несколько слов о методах строк

Ранее уже использовались такие методы, как print и id. Есть свои методы и у строковых данных — они принадлежат конкретному классу str. Чтобы вывести их, можно воспользоваться функцией dir:

Зубрить каждый из них нет необходимости, так как нужные методы будут запоминаться с практикой. Чтобы обратиться к одному из них, следует сначала обратиться к соответствующему объекту, потом поставить точку, потом написать нужный метод и круглые скобки. Лучше это увидеть:

Что отображено на скриншоте выше:

  • была создана новая строка string_1 с содержимым “oTUs”;
  • вначале задействовали метод title — вывод слова получился с заглавной буквы;
  • потом использовали метод для верхнего регистра upper — заглавными (прописными)  стали все символы строки;
  • далее применили lower — все символы стали маленькими (строчными), то есть перешли в нижний регистр.  

Какие еще есть методы:

  • replace —для замены одной части исходной строки (подстроки) на другую;
  • split — позволяет разделить (не удалить!) строку по переданному делителю, возвращает список;
  • join — склеивает подстроки по конкретному разделителю;
  • strip. В языке программирования Python strip используется для обрезки ненужных символов, причем ненужный символ передается в виде аргумента. Обрезку можно выполнять по-разному: если с первого символа слева, то применяют не strip, а lstrip, если справа, то rstrip (с конца строки, если интересует последний символ).

Форматирование строк в Python

Экранирование последовательности

Допустим, нам нужно записать текст в виде — They said, «Hello what’s going on?»- данное утверждение может быть записано в одинарных или двойных кавычках, но оно вызовет , так как содержит как одинарные, так и двойные кавычки.

Рассмотрим следующий пример, чтобы понять реальное использование операторов Python.

Вывод:

Мы можем использовать тройные кавычки для решения этой задачи, но Python предоставляет возможность экранировать нашу последовательнсть символов.

Символ обратной косой черты () обозначает escape последовательность. За обратной косой чертой может следовать специальный символ, который интерпретируется по-разному. Одинарные кавычки внутри строки должны быть экранированы. Мы можем применить то же самое, что и в случае с двойными кавычками.

Вывод:

Ниже приведен список управляющих последовательностей для экранирования:

Escape последовательность Описание
Игнорирует новую строку.
Обратный слэш
Одинарные кавычки
Двойные кавычки
ASCII гудок
ASCII Backspace(BS)
ASCII Formfeed (смещение к началу след. страницы)
ASCII Linefeed (перевод на след. строку)
ASCII Carriege Return(CR) (перемещение курсора к левому краю поля)
ASCII горизонтальная табуляция
ASCII вертикальная табуляция
Символ с восьмеричным значением
Символ с шестнадцатеричным значением.

Вот простой пример использования escape-последовательности.

Вывод:

Мы можем игнорировать управляющую последовательность из заданной строки, используя необработанную строку. Для этого перед строкой нужно написать или . Рассмотрим следующий пример.

Вывод:

Проверка того, из чего состоит строка

Пайтона тип также имеет целый ряд методов , которые могут быть использованы для оценки содержимого строки. Это , , , . Капитализация может быть проверена с , и .  

не принимает никаких аргументов и возвращает , если все символы в данной строке являются буквенными, например:

В краевой случае пустая строка вычисляет значение при использовании .   , ,

Эти методы проверяют использование заглавных букв в заданной строке.

это метод , который возвращает , если все символы в данной строке в верхнем регистре и иначе.

С другой стороны , это метод , который возвращает , если все символы в данной строке в нижнем регистре и иначе.

возвращает , если данная строка названия обсаженное; то есть каждое слово начинается с заглавной буквы, за которой следуют строчные буквы.

, ,

возвращает строка , является ли последовательность десятичных цифр, пригодная для представления десятичного числа.

включает в себя цифру не в форме , подходящей для представления десятичного числа, такие , как надстрочные цифры.

включает в себя любые числовые значения, даже если не цифры, такие как значения вне диапазона 0-9.

Байтовые строки ( в Python 3, в Python 2), поддерживает только , который проверяет только основные ASCII цифр.

Как пустая строка вычисляет значение .  

Это сочетание и , в частности , он имеет значение , если все символы в данной строке являются буквенно — цифровыми, то есть они состоят из буквенных или цифровых символов:

Возвращает , если строка содержит только пробельные символы.

Иногда строка выглядит «пустой», но мы не знаем, так ли это, потому что она содержит только пробелы или вообще не содержит символов

Чтобы покрыть этот случай нам нужен дополнительный тест

Но самый короткий путь , чтобы проверить , если строка пуста или содержит только пробельные символы, чтобы использовать (без аргументов она удаляет все начальные и конечные пробельные символы)

Замыкания: функции, возвращающие функции. Динамически сгенерированная функция

Замыканием называется любая динамически сгенерированная функция, возвращенная из другой функции. Основное свойство замыкания состоит в том, что оно имеет доступ к переменным, определенным в том локальном пространстве имен, в котором было создано.

Вот очень простой пример:

def make_closure(a):
    def closure():
        print('Я знаю секрет: %d' % a)
    return closure

closure = make_closure(5)
closure()

Результат:

Я знаю секрет: 5

Разница между замыканием и обычной функцией Python состоит в том, что замыкание сохраняет доступ к пространству имен (функции), в котором было создано, даже если создавшая ее функция уже завершилась.

Так, в примере выше, возвращенное замыкание печатает строку «Я знаю секрет: 5», в какой бы момент ее ни вызвать. Хотя обычно создают замыкания со статическим внутренним состоянием (в данном случае только значение a), ничто не мешает включить в состав состояния изменяемый объект – словарь, множество, список – и затем модифицировать его.

Например, ниже приведена функция, которая возвращает функцию, запоминающую, с какими аргументами вызывалась объемлющая функция:

def make_watcher():
    have_seen = {}

    def has_been_seen(x):
        if x in have_seen:
            return True
        else:
            have_seen = True
        return False

    return has_been_seen

watcher = make_watcher()

vals = 

print()

Результат:

Однако следует иметь в виду одно техническое ограничение: изменять внутреннее состояние объектов (например, добавлять в словарь пары ключ-значение) можно, но связывать переменные в области видимости объемлющей функции – нельзя. Обойти это ограничение можно, например, путем модификации словаря или списка вместо присваивания значений переменным.

def make_counter():
    count = 

    def counter():
        # увеличить счетчик и вернуть новое значение
        count += 1
        return count
    return counter

counter = make_counter()
print(counter())

Результат:

1

Возникает вопрос, зачем все это нужно? На практике можно написать очень общую функцию с кучей параметров, а затем изготовить на ее основе более простые специализированные функции.

Вот пример функции форматирования строк:

def format_and_pad(template, space):
    def formatter(x):
        return (template % x).rjust(space)
    return formatter

fmt = format_and_pad('%.4f', 15)
print(fmt(1.756))

Результат:

'         1.7560'

Комментарии

Комментарии — это строки, начинающиеся с символа . Ты можешь написать всё, что тебе заблагорассудится, после символа , и Python не обратит на это внимания. Комментарии могут помочь другим людям быстрее понять твой код.

Давай посмотрим, как они выглядят:

python_intro.py

Тебе не стоит писать комментарий для каждой строки кода, но он может быть полезен, чтобы пояснить причину определённых действий или добавить описание, когда код делает что-то особенно сложное.

Подведём итог

В последних трёх упражнениях ты познакомилась с:

  • сравнением — в Python ты можешь сравнивать объекты друг с другом при помощи , , , , и операторов , ;
  • Boolean — типом объекта, который может иметь только два значения: или ;
  • сохранением файлов — хранение кода в файлах позволяет выполнять длинные программы;
  • if…elif…else — условными операторами, которые позволяют выполнять код только при определенных условиях;
  • комментариями — строками, которые Python не запускает и которые позволяют документировать твой код.

Пришло время для последней части этой главы!

Строки

Как насчет твоего имени? Введи свое имя в кавычках, вот так:

Сейчас ты создала свою первую строку! Это последовательность символов, которые могут быть обработаны компьютером. Строка должна всегда начинаться и заканчиваться одинаковым символом. Им может быть одинарная () или двойная () кавычка (разницы нет!) Кавычки говорят Python’у, что внутри них находится строка.

Строки могут быть слиты воедино. Попробуй так:

Ты также можешь умножать строки на число:

Если тебе нужно поставить апостроф внутри строки, то есть два способа сделать это.

Использование двойных кавычек:

или предварение апострофа обратной косой чертой («):

Прикольно, да? Чтобы увидеть своё имя прописными буквами, просто набери:

Ты только что использовала функцию для своей строки! Функция (такая как ) представляет собой набор инструкций, который должен выполнить Python на заданном объекте (в нашем случае: ) при её вызове.

Если ты хочешь узнать количество букв в своём имени, то и для этого тоже существует функция!

Интересно, почему иногда мы вызываем функцию добавлением к концу строки (как ), а иногда сначала пишем имя функции и затем помещаем строку в скобки? Ну, в некоторых случаях функции принадлежат объектам, например функция , которая может быть применена только к строкам. В этом случае мы называем функцию методом. В другом случае функции не относятся к чему-то конкретному и могут использоваться для различных типов объектов, например функция . Вот почему мы передаем в качестве параметра функции .

Краткий обзор

OK, достаточно о строках. Пока ты узнала о:

  • консоль — ввод команд (кода) в интерактивную командную строку Python приводит к ответам на Python
  • числа и строки — в Python числа используются для вычислений, а строки — для текстовых объектов
  • операторы — такие как + и *, объединяют значения для получения нового
  • функции — такие как upper() и len(), выполняют действия над объектами.

Таковы основы каждого языка программирования, который ты можешь выучить. Готова к чему-то посложнее? Мы уверены, что готова!

Итоговый пример

И для закрепления материала давайте напишем и разберём такую программку:

# Для вывода строк используем функцию print()
print("Привет!", "Сейчас посчитаем, сколько будет 6 * 8", sep='\n')

# Устанавливаем переменные
a=6
b=8

# Производим вычисления
print("Производим вычисления", end='... ')
print(a, "*", b, "=", a*b, sep='')

# И сохриним результат в файл
file = open('print.txt','a+')
print(a, "*", b, "=", a*b, sep='', file=file)
file.close()

print("Результат был записан в файл 'print.txt'")
print("Выполните команду 'cat print.txt',", end=' ')
print("чтобы посмотреть содержимое файла.")

Вот результат выполнения этой программы:

$ python3 hello.py 
Привет!
Сейчас посчитаем, сколько будет 6 * 8
Производим вычисления... 6*8=48
Результат был записан в файл 'print.txt'
Выполните команду 'cat print.txt', чтобы посмотреть содержимое файла.

$ cat print.txt
6*8=48

В официальной документации встроенная в Python функция print() описана .

Сводка

Имя статьи
Python 3. Вывод текста на консоль. Функция print()

Описание
В статье узнаем как в Python 3, с помощью встроенной функции print(), вывести текст на консоль. А для закрепления напишем небольшую программу

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: