программирование

Кратко о Python — 5

python-title

<< Кратко о Python — 4

Обработка исключений в Python

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

  • ZeroDivisionError — деление на ноль.
  • ImportError — неудачный импорт.
  • IndexError — указание индекса элемента списка/кортежа за его текущими пределами.
  • NameError — обращение к несуществующей переменной.
  • SyntaxError — синтаксическая ошибка.
  • TypeError — вызов функции с параметром недопустимого типа.
  • ValueError — вызов функции с параметром допустимого типа, но с недопустимым значением.

При возникновении исключения выполнение программы прерывается. Однако в Python предусмотрена возможность его обработать. Это как минимум позволяет вывести «человекопонятное» сообщение об ошибке.

try-except

Для обработки исключений мы используем оператор try…except. В блок try помещаем фрагмент кода, при выполнении которого может возникнуть исключительная ситуация.

Если произошло исключение, исполнение блока try прерывается и выполняется блок except. Если же исключений не было, блок except вообще не выполняется. Например:

try:
    num1 = int(input('Делимое: '))
    num2 = int(input('Делитель: '))
    print('Частное:', num1 // num2, '(ост.', num1 % num2, ')')
    print('Вычисление выполнено') 
except ZeroDivisionError:
    print('Делить на ноль нельзя!')

Если в качестве делителя ввести 0, получим результат «Делить на ноль нельзя!».

Оператор try…except может включать несколько блоков except, обрабатывающих разные типы ошибок. Если мы хотим, чтобы один блок обрабатывал несколько разных типов исключений, их нужно перечислить в круглых скобках. Например:

try:
    num1 = int(input('Делимое: '))
    num2 = int(input('Делитель: '))
    print('Частное:', num1 // num2, '(ост.', num1 % num2, ')')
except ZeroDivisionError:
    print('Делить на ноль нельзя!')
except (ValueError, TypeError):
    print("Недопустимые исходные данные!")

Если в except не указан тип, блок будет обрабатывать любое исключение:

try:
    num1 = int(input('Делимое: '))
    num2 = int(input('Делитель: '))
    print('Частное:', num1 // num2, '(ост.', num1 % num2, ')')
except:
    print('Ошибка!')

Любое исключение возвращает сообщение с описанием конкретной ошибки. Его можно использовать в обработчике, если присвоить какой-либо переменной с помощью ключевого слова as:

try:
    num1 = int(input('Делимое: '))
    num2 = int(input('Делитель: '))
    print('Частное:', num1 // num2, '(ост.', num1 % num2, ')')
except ZeroDivisionError:
    print('Делить на ноль нельзя!')
except (ValueError, TypeError) as msg:
    print("Недопустимые исходные данные!\n", msg)

finally

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

try:
    num1 = int(input('Делимое: '))
    num2 = int(input('Делитель: '))
    print('Частное:', num1 // num2, '(ост.', num1 % num2, ')')
except ZeroDivisionError:
    print('Делить на ноль нельзя!')
finally:
    print('Но мы продолжаем работать.')

Кратко о Python — 6 >>

Опубликовано Михаил К в Информатика и ИКТ, 0 комментариев

Кратко о Python — 4

python-title

<< Кратко о Python — 3

Типы данных (продолжение)

Изменяемые и неизменяемые типы данных

Типы данных в Python делятся на изменяемые (mutable) и неизменяемые (immutable). Тут важно сразу понять, что неизменяемый тип — это не аналог константы в других языках программирования. В переменной неизменяемого типа нельзя изменить значение отдельного элемента, а вот присвоить новое значение всей переменной вполне можно. Например, к неизменяемым в Python относятся (сюрприз!) строки. То есть просто так поменять в строке одну букву не получится. Попытка запустить такую программу

a = 'кот'
a[1] = 'и'
print(a)

приведет к ошибке TypeError.

Но можно «собрать» новую строку:

a = 'кот'
a = a[0] + 'и' + a[2]
print(a)

(или воспользоваться методом replace, который, тем не менее, также не меняет символ внутри исходной строки, а возвращает новую)

a = 'кот'
a = a.replace('о','и')
print(a)

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

a = ['к', 'о', 'т']
a[1] = 'и'
print(a)

Кортежи в Python

Кортеж (tuple) — тип данных, очень похожий на список, но этот тип — неизменяемый. Запись же его отличается тем, что используются не квадратные, а круглые скобки.

Вот пример кортежа:

exam_register_numbers = ('15001147' , '15001148' )

Получить значение элемента кортежа можно точно так же, как и элемента списка — по его индексу. Например,

print( exam_register-number[0] )

На экран при этом будет выведено число  ‘15001147’.
Но вот если попытаться поменять значение отдельного элемента кортежа, мы получим ошибку TypeError — тип-то неизменяемый.

Как и списки, кортежи могут быть вложенными.

Зачем может понадобиться использовать кортеж, если есть более универсальный тип список? Дело в том, что с кортежами Python работает быстрее.

Множества в Python

Множество (set) — это неупорядоченный набор элементов. Каждый его элемент должен быть уникальным и относиться к неизменяемому типу. А вот сам тип множество, тем не менее, — изменяемый. Мы можем добавлять к нему элементы и удалять их отуда.

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

Например:

groceries = { 'яблоко', 'молоко', 'курица'}

Так же как в списке и кортеже, во множестве может содержаться любое число элементов, в том числе, нулевое. И точно так же элементы множества могут быть разных (неизменяемых!) типов. Однако мы не сможем добраться до этих элементов, используя индекс или срез.

Внимание! Создать пустое множество с помощью литерала {} нельзя. При его использовании создается пустой словарь.

Мы можем добавить к множеству отдельный элемент с помощью метода add(). Если нужно включить все элементы другого множества, потребуется метод update(). Для удаления элемента служат discard() и remove(). Разница между этими методами в том, что для discard() не важно, был ли такой элемент в исходном множестве, а remove() при отсутствии элемента вызовет исключение KeyError.

Если нужно удалить все элементы множества, используем метод clear().

s = set()
print(s)
s.add('$')
print(s)
s1 = {'€', '£', '¥'}
s.update(s1)
print(s)
s.discard('¥')
print(s)
s.clear()
print(s)

В результате будет выведено

set() 
{'$'} 
{'¥', '£', '€', '$'}
{'£', '€', '$'}
set()

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

l = ['€', '£', '¥', '£', '¥', '¥']

Преобразуем его в множество – там будут только уникальные элементы:

s = set(l)
print(s)
{'£', '¥', '€'}

Теперь выполняем обратное преобразование.

l = list(s)
print(l)

Voi là, готов список, из которого исключены все дубли.

['£', '¥', '€']

Есть в Python и методы, реализующие математические операции над множествами (union(), intersection(), difference() и symmetric_difference)… Хотя их мы можем записать и как операции:

A = {2, 3} 
B = {1, 2} 
print(A | B) # объединение множеств
print(A & B) # пересечение множеств
print(A - B) # множество элементов A, не содержащихся в B
print(A ^ B) # множество элементов, содержащихся только
             # в каком-либо одном исходном множестве

Результат работы этого фрагмента :

{1, 2, 3}
{2}
{3}
{1, 3}

Словари в Python

Словарь (dict) — это такая структура данных, которая хранит пары «ключ – значение». Представьте, что вы открыли англо-русский словарь. Вы находите слово «book» и напротив него видите перевод — «книга». В данном случае «book» является ключом, а «книга» — значением. Примерно также и Python поступает со своими словарями.

Синтаксис словаря:

{ ключ1: значение1, ключ2 : значение2,.... }

Например, создадим записную книжку с телефонами, описав вот такой словарь:

phone_book = {
    'Вася' : '+79998887766',
    'Петя' : '+79997776655',
    'Маша' : '+79996665544'
    }

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

print(phone_book['Маша'])

В данном случае напечатано будет «+79996665544».

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

phone_book = {
    'Вася' : ['+79998887766', 'Зеленая ул., 1'],
    'Петя' : ['+79997776655', 'Рябиновый пер., 2'],
    'Маша' : ['+79996665544', 'Светлый просп., 3']
    }

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

Например, оператор

print(phone_book['Маша'][1])

выведет на экран «Светлый просп., 3»

Изменение словаря

Что делать, если мы захотим записать в нашу книжку еще одного знакомого? Очень просто. Достаточно присвоить значение элементу словаря с ранее не существовавшим ключом. Например:

phone_book['Боря'] = ['+7999111223', 'Зеленая ул., 5'] 

А если нужно изменить значение? Просто присвоим новое значение. Пусть, например, изменился телефон у Маши:

phone_book['Маша'][0] = '+79995554433' 

Заметьте: в этом примере меняется не все значение (список), а только нулевой элемент этого списка.

Для удаления ключа из словаря служит метод (причем этот метод возвращает значение удаляемого ключа)

словарь.pop( ключ, по_умолчанию)

Например,

phone_book.pop('Петя')

просто удалит из словаря ключ ‘Петя’ и его значение. А команда

print(phone_book.pop('Петя'))

еще и выведет значение на экран.

Если ключа в словаре нет, будет сгенерировано исключение. Чтобы избежать такой ситуации, нужно указать второй параметр («по_умолчанию»). Например,

phone_book.pop('Боря', 'ключ отсутствует')

Перебор элементов словаря

Перебрать все пары ключ-значение, содержащиеся в словаре, можно используя цикл for и метод словарь.items(). Выглядеть это будет примерно так:

for k, v in phone_book.items():
      print(k, ":", v[0])

При выполнении этого фрагмента мы увидим на экране

Вася : +79998887766
Петя : +79997776655
Маша : +79995554433

Assert. Проверка утверждений при отладке

В языке Python есть специальная инструкция, помогающая отладке программ — assert («утверждение»). Если указаное в инструкции выражение истинно, программа продолжает выполнение, как ни в чем не бывало. Если же оно ложно, генерируется исключение AssertionError. Например, запустим следующую программу:

print(1) 
assert 2 + 2 == 4 
print(2) 
assert 1 + 1 == 3 
print(3)

В результате получим:

1
2
AssertionError

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

def divide(x, y):
    assert y != 0 
    return round(x/y, 3)

Если хочется не просто получить исключение, но еще и сообщение о его причине, можем использовать в конструкции assert второй параметр:

def divide(x, y):
    assert y != 0 , 'Нельзя делить на 0'
    return round(x/y, 3)

Тогда при запуске с некорректными параметрами:

print (divide(5, 0))

получим вот такое сообщение:

AssertionError: Нельзя делить на 0

Кратко о Python — 5 >>

Опубликовано Михаил К в Информатика и ИКТ, 0 комментариев

Кратко о Python — 3

python-title

<< Кратко о Python — 2

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

Небольшое замечание: определить тип (точнее, класс) конкретной переменной в Python можно с помощью функции type(переменная).

Типы данных

Числа в Python

В Python 3 встроено три числовых типа: целый, вещественный и комплексный.

Целые числа (int). В Python имеют неограниченную длину [ну, почти — память у компьютера всё же не бесконечна ;-)]. То есть можно, например, совершенно точно посчитать, сколько будет 123456789012345678901234567890 * 9876543210987654321. Преобразовать данные в целый тип можно с помощью функции int().

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

Вещественные числа (float). Точность представления ограничена примерно 16 значащими цифрами. Явное преобразование в вещественный тип производится функцией float().

Комплексные числа (complex). Записываются в виде суммы действительной и мнимой частей. Заметьте: мнимая часть обозначается не традиционной для математиков i, а буквой j (привет, электронщикам! ;-)). Например, 5+2j

Для преобразования в комплексное служит функция complex(r,i). Например, print(complex(2*5,1/2)) выведет на экран (10+0.5j).

Строки в Python

Строковые константы создаются как последовательность символов, заключенная в одиночные или двойные кавычки. Например, строками будут "Python is fun" и 'I love python'.

Склеивание строк

В Python операцию конкатенации («склеивания») строк обозначают знаком +.

Например, результатом выпражения "Hello" + " " + "World" будет «Hello World». Строку также можно повторять («умножать»). Например, выражение 'Халва'*3 дает в результате ‘ХалваХалваХалва’.

Выбрать отдельный символ строки можно, указав в квадратных скобках его индекс (порядковый номер).  Например, 'Программирование'[0] даст результат ‘П’ (напомню, что в Python нумерация всегда начинается с нуля). 

Срезы

Если нужно получить фрагмент строки (так называемый срез), в квадратных скобках записывают индекс его начального символа и индекс, следующий за конечным: [ start : stop ]. Например, 'Программирование'[0:3] даст ‘Про’.

Можно также вести отсчет от конца строки, указывая отрицательные значения индекса (последний символ имеет индекс -1). Например, 'Python'[-1] даст ‘n’.  'Python'[0:-1]  даст ‘Pytho’.

Мы также можем выбрать символы не подряд, указав шаг: [ start : stop : step ]

Например,  'Python'[0:-1:2] даст ‘Pto’, а 'howareyou'[0:-1:3] даст ‘hay’.

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

Разделение строки

Чтобы разбить строку на список слов, используется метод split().

sentence = "I love python" 
words = sentence.split() 
print(words)

В результате выполнения такого фрагмента программы будут выведено  [‘I’,’love’,’python’].

Списки в Python

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

words= ['Hello', 'world', 'how', 'are', 'you'] 
print(words[0])

В результате будет выведено слово ‘Hello‘.

Можно также получать срезы списка аналогично срезам строк.

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

things= ['нечто', 0, [1, 2], 4.56] 
print(things[2, 1], things[0])

Выведено будет ‘2 нечто’.

Рассмотрим теперь некоторые полезные методы Python для работы со списками.

append

Метод append добавляет элемент в конец существующего списка. Например:

numbers = [1, 2, 3] 
numbers.append(4) 
print(numbers)

Результат: [1,2,3,4].

insert

Метод insert вставляет новый элемент в заданное место существующего списка. Например:

words ['python', 'fun'] 
words.insert(1, 'is')
      # (индекс, значение)  
print(words)

Результат: [‘python’,’is’,’fun’].

len

Чтобы узнать количество элементов в списке (его длину), служит функция len. Например:

numbers = [1, 2, 3, 4, 5] 
print(len(numbers))

Результатом будет число 5.

Некоторые другие полезные функции и методы:

  • max(list) — получить максимальный элемент списка.
  • min(list) — получить минимальный элемент списка.
  • list.remove(item) — удалить элемент из списка.
  • list.pop(index) — «извлечь» элемент (удалить из списка и вернуть значение как результат метода); если индекс не указан, по умолчанию берется последний элемент.
  • list.reverse() — реверсировать порядок элементов списка.
  • list.sort() — отсортировать список по возрастанию.

Например:

list = [3, 5, 2, 4, 1]
list.sort()
print(list)
list.reverse()
print(list)

В результате будет выведено:
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

Для списков также работают операции + и * (аналогично строкам).

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

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

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

instr = ['гитара', 'синтезатор', 'ударные']
group = 'Для записи трека потребуются {0}, {1} и {2}.'
print(group.format(instr[2], instr[0], instr[1]))

В результате будет выведено

Для записи трека потребуются ударные, гитара и синтезатор.

В данном случае при вызове метода указано три аргумента. Каждый из них будет подставлен в исходную строку вместо так называемого поля замены — фигурных скобок {}, в которых в данном случае указан порядковый номер.  

Кстати, при подстановке в строку значений элементов списка можно поступить и по-другому: в качестве параметра методу format передать весь список, а в поле замены кроме номера аргумента указывать еще и индекс. Например, тот же самый результат, что и в предыдущем примере, можно получить вот такой программой:

instr = ['гитара', 'синтезатор', 'ударные']
group = 'Для записи трека потребуются {0[2]}, {0[0]} и {0[1]}.'
print(group.format(instr))

При необходимости один и тот же аргумент может быть подставлен в несколько мест строки. Например, при выполнении инструкции

print('{0}{1}{0}'.format('кол', 'о'))

на экране появится слово

колокол

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

Кратко о Python — 4 >>

Опубликовано Михаил К в Информатика и ИКТ

Кратко о Python — 2

python-title

<< Кратко о Python — 1

В этой части речь пойдет об операторах, создающих структурные элементы программ.

Условный оператор в Python

В.М. Васнецов. «Витязь на распутье»

Ветвление — одна из трех базовых конструкций структурного программирования. Используется в тех случаях, когда выполнение или невыполнение того или иного набора команд зависит от результата проверки некоторого условия. В большинстве языков программирования ветвление реализуется как условный оператор (условная инструкция) if и как оператор множественного выбора case (switch).

В Python отдельного оператора множественного выбора нет. Все варианты выбора строятся с использованием трех ключевых слов: ifelif и else. 

if

if (если) — единственный обязательный элемент условного оператора. Он начинает запись ветвления и определяет условие, при котором будет выполняться первая (или единственная) последовательность команд.

else

Ключевое слово else (иначе) начинает последний блок ветвления — команды, которые будут выполнены, когда условие (все условия) ложны (имеют значение False).

elif

Когда вариантов действий больше двух, между блоками if и else ставят нужное количество блоков, начинающихся ключевым словом elif (сокращение от else if — иначе если). Команды блока будут выполнены, если все предыдущие условия ложны, а это – истинно.

if условие :
      операторы # если выполнено первое условие
elif условие:
      операторы # если первое условие не выполнено,
                # а второе — выполнено
else:
      операторы # когда не выполнено ни одно из условий

Отступы в Python

Обратите внимание: в Python для выделения блоков операторов используются отступы (пробелы в начале строки), а не специальные символы (например, фигурные скобки в C, Java, PHP) или слова (begin и end в Pascal). Важно, чтобы отступ у всех строк блока был одинаковым (принято сдвигать операторы вложенного блока на 4 пробела).

if x > 0 :
    print('положительное')
elif x < 0 :
    print('отрицательное')
else :
    print('ноль')

Тернарная условная операция

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

выражение_1 if условие else выражение_2

Ее можно прочесть как «выражение 1, если выполнено условие, а иначе — выражение 2».

max = a if a > b else b

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

Циклы в Python

Лунный цикл

Цикл — третья базовая структура в программировании. Эта управляющая конструкция предназначена для многократного повторения некоторой последовательности команд.

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

Цикл while

Оператор цикла while предназначен для организации цикла с предусловием (цикла «пока»). Тело этого цикла повторяется, пока истинно условие повторения. Проверка условия происходит перед выполнением команд тела цикла. Оператор выглядит так:

while условие_повторения :
      операторы

Например:

n = 1
while n < 50 : # пока n меньше 50
    print(n)   # вывести n
    n *= 2     # увеличить n в два раза

В результате будет выведено:

1
2
4
8
16
32

Для изменения «нормального» выполнения цикла в Python есть два оператора — continue и break. Первый служит для того, чтобы прервать текущую итерацию и перейти к началу следующей:

n = 1
while n < 100 :
    if n < 10 :   # если n < 10,
        continue  # перейти к следующей итерации
    print(n)
    n *= 2

Оператор break прерывает выполнение всего цикла. Это можно, в частности, использовать, чтобы организовать аналог отсутствующего в Python цикла с постусловием (цикла «до»). Например:

while True :
    pass = input('Введите пароль:')
    if pass == secret :
        break

Цикл for

В цикле с параметром (цикле «для») переменная-параметр поочередно принимает значения из заданной последовательности, и при каждом из этих значений выполняется тело цикла. В отличие от многих других языков, в Python эти значения могут выбираться из любого списка. Например:

days = ['понедельник','вторник','среда', 'четверг', 'пятница', 'суббота', 'воскресенье'] 
for day in days:
        print(day)

Для более «традиционного» применения цикла for — когда параметр отсчитывает количество повторений — используют функцию range. Например:

for i in range(5):
      print('Python')

В результате слово Python будет напечатало пять раз.  

Range

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

numbers = list(range(10)) 
print(numbers)

В результате будет выведено [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].

В случае вызова функции range с двумя аргументами — range(нач,кон) — мы указываем число, с которого последовательность будет начинаться, и число, перед которым она закончится. Например:

numbers = list(range(5, 10)) 
print(numbers)

Теперь на экране будет [5, 6, 7, 8, 9].

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

numbers = list(range(5,10,2)) 
print(numbers)

В этом случае результатом станет  [5,7,9].  

Функции в Python

Функция — это именованный блок кода, выполняющий некоторую задачу, который можно использовать в нескольких местах программы. Внешне вызов функции выглядит как слово, после которого есть круглые скобки. В скобках могут быть записаны какие-либо выражения — параметры функции. Например, функциями являются уже неоднократно использованные print и input:

print(2 * 2) # параметром является выражение, результат 
             # которого выводится на экран

Наряду со встроенными функциями, можно создавать свои, используя оператор def. Например:

def pythagoras(a, b) :
    c = (a ** 2 + b ** 2) ** 0.5
    print(c)

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

pythagoras(3, 4)

мы увидим на экране результат вычисления — 5.0.

Важно: описание функции в программе должно стоять до ее первого вызова.

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

def pythagoras(a, b) :
    c = (a ** 2 + b ** 2) ** 0.5
    return c

Теперь функция сама ничего на экран не выводит. Зато ее можно использовать в выражении:

print(pythagoras(3, 4) * pythagoras(5,7) / 2)

Заметьте: оператор return завершает выполнение функции, даже если после него есть еще какие-либо операторы.

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

def default_user() :
    name = 'Вася'
    age = 12
    return name, age
user_name, user_age = default_user()
print(user_name, user_age, sep='\t')

Модули в Python

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

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

Для доступа к функциям модуля его сначала нужно импортировать, написав в начале программы import имя_модуля. Например, чтобы смоделировать бросание игральных костей, подключим модуль random:

import random 
for i in range(5):
      value = random.randint(1, 6)
      print(value)

При каждом запуске будет печататься различный набор из 5 чисел в диапазоне от 1 до 6. Например, 2 3 1 3 5

Обратите внимание: в данном случае для вызова функции нужно перед ее именем указывать имя модуля. Однако, можно импортировать отдельные функции так, что имя модуля при вызове уже не потребуется. Для этого используется такой формат: from имя_модуля import имя_функции. Например:

from math import sqrt, pi

Функцию можно импортировать под другим именем, используя слово as. Например:

from math import sqrt as square_root

Теперь функцию нужно будет вызывать примерно вот так: square_root(5).

Кратко о Python — 3 >>

Опубликовано Михаил К в Информатика и ИКТ, 0 комментариев

Кратко о Python — 1

python-title

В этой заметке мы попытаемся познакомиться с основными элементами языка программирования Python (правильное произношение —Пáйтон, хотя по-русски его зачастую называют Питóном).

Почему Python?

Python — один из наиболее популярных сейчас языков программирования, он отлично подходит для решения широкого спектра практических задач (и реально применяется: Google, Facebook, GIMP, Sims…).

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

Python — свободное ПО, работающее едва ли не на любой современной платформе: Windows, macOS, Linux/Unix, iOS, Android и др.

С другой стороны, Python очень прост в изучении. Во всяком случае, синтаксис у него заметно проще, чем у многих других популярных языков.

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

Недаром в последнее время Python понемногу вытесняет в школьном курсе информатики более «традиционные» языки.

Python 2 или Python 3?

Еще недавно этот вопрос был очень серьезным. На компьютере с macOS или Linux Python 2.x присутствовал по умолчанию (да и во многих учебниках можно было увидеть именно его).

Однако поддержка второй версии языка в 2020 году закончилась. Так что вопрос снят. Мы будем изучать Python 3. 

Заметьте: Python 3 существенно отличается от Python 2. Поэтому всегда нужно обращать внимание, какой из них используется в книге или статье, которой вы пытаетесь воспользоваться.

Что нам потребуется?

Что же нам потребуется для изучения Python? Для работы с любым языком программирования нужно иметь, как минимум, редактор, с помощью которого пишут и редактируют текст программы, и компилятор, «переводящий» этот текст на «язык компьютера».

Устанавливаем Python

Для полноценного использования Python установите его свежую версию на свой компьютер. Если вы работаете под Windows или macOS, скачайте установщик с сайта python.org. Для Linux воспользуйтесь установкой из репозитория. Заметьте: вместе с компилятором устанавливается IDLE (Integrated Development and Learning Environment = Интегрированная среда разработки и обучения). То есть можно больше ничего не устанавливать. Однако, для серьезной работы можно установить какой-нибудь более совершенный редактор.

Если вы только начинаете знакомство с Python, рекомендую попробовать Thonny — интегрированную среду, созданную специально для начинающих. Она не загромождена излишними (для начинающего!) элементами. Ее можно установить на компьютере, не имея административных прав. К тому же, в нее встроен компилятор, т.е. можно не устанавливать Python отдельно.

Интерфейс Thonny

Наконец, для первых экспериментов с Python можно вообще ничего не устанавливать, а просто воспользоваться онлайн-IDE repl.it. Войдите на сайт, выберите Python 3 (там есть и другие языки) — и можно программировать. 

Что ж, приступим…

Базовые элементы

Привет, мир! или
вывод на экран в Python

Начнем с «классики жанра». Выведем на экран традиционное «Привет, мир!» Тут Python будет неоригинален: нужно написать слово print, а затем в скобках — то, что хотим вывести.

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

Еще одно замечание: программа на Python — это текстовый файл, сохраненный с расширением «.py», например, task1.py

Если мы хотим вывести какой-нибудь текст, его нужно заключить в кавычки (не важно, одинарные или двойные).

Так мы и поступим:

print("Привет, мир!")

Для вывода чисел кавычки не нужны:

print(100500)

Нетрудно догадаться, что на экране появится именно это число — 100500. 

Переменные

Для хранения изменяющихся в процессе работы программы данных используют (Кто бы мог подумать! 😉 ) переменные. В отличие от C, Java или Pascal, переменные в Python не нужно заранее объявлять. Создаются они в тот момент, когда в первый раз получают значение. И тип их определяется хранящимся в данный момент значением.

Динамическая типизация упрощает написание программ, но увеличивает вероятность ошибок.

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

Имена, начинающиеся со знака подчеркивания — специальные. Давать своим переменным такие имена не рекомендуется.

Python 3 допускает использование в именах букв любых алфавитов, например, русского. Однако, рекомендуется использовать только ASCII-символы (т.е. ограничиться латинским алфавитом).

«Обычные» имена переменных рекомендуется записывать только строчными буквами. Если имя состоит из нескольких слов/частей, то тоже записывать всё маленькими буквами через знак подчеркивания, например, very_big_mouse.

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

apples = 10 
print(apples)

На экран будет выведено значение переменной apples, т.е. число 10.

Получаем информацию от пользователя

В процессе выполнения программы важно иметь возможность получать ту или иную информацию от пользователя. Для этого в Python используется функция input.  Введенное человеком значение обычно сохраняют в переменной. Например, так:

username = input()
print("Привет, " + username + "!")

Чтобы пользователь понимал, чего от него ждет компьютер, в качестве параметра функции input можно указать текст, который будет показан на экране. Например, записанную выше программу можно слегка изменить вот так:

username = input("Как тебя зовут? ")
print("Привет, " + username + "!")

В результате на экране появится вопрос «Как тебя зовут?» Затем компьютер будет ждать, когда человек введет свое имя, сохранит его в переменной username, а потом напишет приветствие, в которое подставит это значение.

Оператор присваивания

Знаком = в Python обозначают оператор присваивания. При его выполнении переменная, находящаяся слева от знака, получает значение, указанное справа.

В Python можно использовать также комбинированные операторы, предписывающие, как следует изменить значение переменной. Например, += указывает, что значение нужно увеличить на заданную величину, т.е. cost += 10 соответствует cost = cost + 10.

Комментарии в Python. Как и зачем?

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

Компьютер текст комментария пропускает, не обращая на него никакого внимания.

Это позволяет временно отключить тот или иной участок программы, если отметить его как комментарий — «закомментировать».

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

 # Вся эта строка — комментарий
print('Этот текст будет напечатан') # А это — комментарий

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

'''Это многострочный
   комментарий'''

Не забывайте комментировать свой код!

Операции в Python

В Python есть несколько типов операций.

  • арифметические операции
  • операции сравнения
  • логические операции
  • битовые операции

Арифметические операции

Арифметические операции служат для выполнения вычислений.

  • + — сложение.
  • — вычитание.
  • * — умножение.
  • / — деление.
  • // — деление нацело.
  • % — остаток от деления.
  • ** — возведение в степень.

Операции сравнения

Операции сравнения выдают результат сравнения двух значений как True (истина) или False (ложь).

Обратите внимание: логические константы False и True записываются в Python с заглавной буквы.

  • == — равно?
  • != — не равно?
  • > — больше?
  • < — меньше?
  • >= — больше или равно?
  • <= — меньше или равно?

Логические операции

Логические операции также дают результат True или False.

  • and — операция «И», дает результат True, если оба операнда истинны.
  • or — операция «ИЛИ», дает результат True, если истинен хотя бы один из операндов.
  • not — операция «НЕ» (унарная), дает результат True, если операнд ложный.

Битовые операции

Битовые операции работают с каждым битом двоичного представления операндов.

  • & — битовое И (бит в двоичной записи результата равен 1, если соответствующие биты обоих операндов равны 1).
  • | — битовое ИЛИ (бит в двоичной записи результата равен 1, если соответствующие бит хотя бы одного из операндов равен 1).
  • ^ — битовое исключающее ИЛИ (бит в двоичной записи результата равен 1, если соответствующий бит только одного из операндов равен 1).
  • ~ — битовая инверсия (НЕ) (бит в двоичной записи результата равен 1, если соответствующий бит операнда равен 0).
  • << — битовый сдвиг влево (значения битов левого операнда сдвигаются на заданное правым операндом число разрядов, «лишние» биты отбрасываются)
  • >> — битовый сдвиг вправо

Выражения в Python

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

Приоритет операций

В Python, как и в математике, при вычислении выражений, содержащих несколько операций, они выполняются в строго определенном порядке:

  1. Выражения в скобках
  2. Возведение в степень (a ** 3) — справа налево
  3. Унарный минус (-a) и битовое отрицание (~a)
  4. Умножение и деление (a * b, a / b, m // 4, n % 3)
  5. Сложение и вычитание (a + b, m - n)
  6. Сдвиги (n << 2, m >> 1)
  7. Битовое И (n & m)
  8. Битовое исключающее ИЛИ (n ^ m)
  9. Битовое ИЛИ (n | m)
  10. Сравнение (n == 0, m != n, a > 0, b < 5, x >= 10, z <= 2)
  11. НЕ (not)
  12. И (and)
  13. ИЛИ (or)

Кратко о Python — 2 >>

Опубликовано Михаил К в Информатика и ИКТ