Знакомство с Python

Почему Python?

Python простой

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

Python популярный

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

Python универсальный

Используется в самых разных сферах. Даже если вы не будете разработчиком, он может вам пригодиться.

Пример программы на языке Python:

sum = 0
array = [45, 7, -934, 0, 2839]
for i in array:
sum += i
print(sum)

Как запускаются программы на Python?

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

Текст программы на компилируемом языке программирования сначала полностью преобразовывается специальной программой (компилятором) в машинный код.
На выходе получается файл специального формата (исполняемый).
Именно его и выполняет компьютер.

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

Python является интерпретируемым языком. Для запуска программы на вашем компьютере достаточно простого текстового редактора, где вы будете писать программный код, и интерпретатора Python, который будет выполнять эту программу.
Можно пользоваться онлайн-ресурсами: https://repl.it/  или https://www.pythonanywhere.com

Программирование на Python

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

Ввод и вывод информации

Для вывода информации на экран в Python существует функция:

print("Hello, world!")

В скобках мы передаем функции то, что хотим распечатать на экране.
В этом примере распечатывается строка: Hello, world!

print(34)

Распечатается число 34.

Для того, чтобы внести данные в программу извне, существует функция input().

age = input("Введите Ваш возраст:")

При запуске данного примера на экране компьютера мы увидим подсказку “Введите Ваш возраст”, а затем — поле для ввода данных. Введенное в это поле значение будет сохранено в переменную age.

Что такое переменная?

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

age = 30

Простые типы данных

Числа: типы int и float

Все объекты в Python принадлежат какому-то классу или, другими словами, у всех данных есть свой определенный тип. Чтобы узнать тип данных, можно воспользоваться следующим кодом:

print(type(5))
print(type(5.8))

В первом случае будет выведен результат <class 'int'>, а во втором — <class 'float'>. Целые числа принадлежат классу int, дробные — классу float.

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

a = 5
print(type(a))
a = 8.9
print(type(a))

В первом случае будет распечатан тип int, во втором — float.

Операции с числами

Над объектами из классов int и float можно производить стандартные арифметические операции:

print(5+7)
print(10-4)
print(64/8)
print(9*8+25/5)

В Python есть 3 типа делений:

print(17/2) #обычное деление - результат 8.5
print(17//2) #целочисленное деление - результат 8, целая часть при делении
print(17%2) #деление с остатком - результат 1, остаток при делении

Обратите внимание на текст после знака #. Так в Python обозначаются комментарии. Эта часть кода не обрабатывается интерпретатором, она нужна для вас и других разработчиков, которые будут работать с кодом.

Еще один вариант комментариев в коде:

'''Различные варианты деления в Python
обычное деление
целочисленное деление
деление с остатком'''

Возведение в степень:

print(3**6)
print(10**(-1))
print(25**(1/2))

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

729
0.1
5.0

Строки

Мы уже рассматривали строку "Hello, world!". Строки относятся к классу str.

print(type("Hello, world!"))

Строки тоже можно складывать. При сложении они склеиваются.

str1 = 'Hello, '
str2 = 'world!'
print(str1+str2)

Результат: “Hello, world!”

Строку можно умножить на число:

print(str1*5)

Результат — это повторение строки str1 5 раз.

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

print(len('строка'))

Кстати, строку можно обрамлять как одинарными кавычками, так и двойными.

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

a = int(input())
b = float(input())

Логический тип данных

В Python существует логический тип данных — класс bool. Переменные этого типа могут принимать только 2 значения: True и False.

print(True)
print(False)
print(type(True))
print(type(False))

Тип данных None

В Python существует зарезервированное слово None, которое обозначает отсутствие типа.

a = None
print(type(a))

Составные типы данных

Списки

Совокупность объектов в Python представляется в виде структур данных.

Список — это упорядоченная и изменяемая коллекция объектов произвольного типа.

array = [1, 2, 3, 4, 5, 6, 7] # список из целых чисел int
print(type(array)) # класс list
ar = [2, 4.6, 'str', [1, 2, 3]] # список, состоящий из целого числа,
# из числа с плавающей точкой, из строки и из списка

Обратиться к элементу списка мы можем по его индексу. Нумерация элементов начинается с 0.

print(array[0], array[1]) # печатаем 2 первых элемента в списке: 1 и 2
array[0] = 0 # в нулевой элемент списка кладем цифру 0

Мы можем расширить список, добавить в конец списка новый элемент:

array.append(8)

В список array добавили элемент 8 с помощью метода append.

Списки можно складывать (склеивать):

array2 = [9, 10]
new_array = array + array2
new_array = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Можно определить длину списка new_array:

len(new_array)

Найти сумму элементов списка:

sum(new_array)

Сейчас наш список new_array выглядит так [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]. Предположим, что мы хотим добавить в список новый элемент 1. Мы можем добавить его в конец с помощью метода append. Но мы хотим, чтобы 1 оказалась между 0 и 2. Мы можем сортировать наш список по возрастанию с помощью метода sort.

new_array.append(1)
print(new_array)
new_array.sort()
print(new_array)

В первом случае распечатается список [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1].
А во втором — [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

Словари

Еще одна распространенная структура данных в Python — это словари.

Словарь — это неупорядоченные коллекции произвольных объектов с доступом по ключу.

Пример словаря:

dictionary = {'dog' : 'собака', 'table' : 'стол', 'computer': 'компьютер'}

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

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

print(dictionary['dog']) # печатаем строку 'собака'
dictionary['dog'] = 'пес' # изменяем значение 'собака' на 'пес'
dictionary['laptop'] = 'ноутбук' # добавляем новый элемент с ключом
# 'laptop' и значением 'ноутбук' в словарь

Логический тип данных

Простой алгоритм в коде выполняется линейно сверху вниз. Но иногда могут появиться дополнительные условия, из-за которых требуется игнорировать часть кода.
Например, у нас есть алгоритм расчета цены. Но при условии наличия у покупателя пенсионного удостоверения, мы рассчитываем цену со скидкой. Т.е. если условие “покупатель имеет пенсионное удостоверение” — верно, то мы включаем расчет со скидкой, в противном случае — игнорируем эту часть расчетов.

Значения “верно/неверно” содержат тип данных bool. Переменные этого типа могут принимать только 2 специальных значения: True (истина) и False (ложь).
Результаты сравнений являются логическим типом данных:

print(3 > 4) #False
print(5 < 9) #True print(7 >= 7) #True
print(-9 > 0) #False
print(10 == 10) #True
print('hello' != 'world') #True

== — равно, != — не равно.

Предположим, что мы вводим с клавиатуры число и записываем его в переменную x. Мы хотим понять, принадлежит ли значение x промежутку от 5 до 10. Можно записать два сравнения и объединить их оператором and.

x = int(input())
print(x >= 5 and x <= 10)

Основные операции с логическим типом данных:

and: логическое И

or: логическое ИЛИ

not: отрицание (НЕ)

Условные конструкции

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

Рассмотрим условные конструкции на примере.

С клавиатуры вводится число. Нужно определить его знак.

x = int(input()) 
if x > 0:
  print('Положительное число')

Если x > 0, то распечатается строка “Положительное число”. Если x <= 0, то не распечатается ничего.

Улучшим программу:

x = int(input()) 
if x > 0:
  print('Положительное число')
else:
  print('Отрицательное число')

Если x > 0, то распечатается строка “Положительное число”. Иначе — строка “Отрицательное число”.

Давайте обработаем отдельно случай, когда x == 0:

x = int(input())
if x > 0:
  print('Положительное число')
elif x < 0: 
  print('Отрицательное число') 
else: 
  print('Ноль')

Если x > 0, то печатаем “Положительное число”, иначе, если x < 0, то печатаем “Отрицательное число”, иначе печатаем “Ноль”.

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

Цикл while

Цикл — это способ организовать многократное выполнение кода.

Например, мы хотим распечатать все числа от 1 до 10. С помощью цикла while это реализуется следующим образом:

i = 0
while i <= 10:
print(i)
i += 1

В данном случае переменная i -это счетчик цикла. В начале i = 0. На каждой итерации цикла мы распечатываем текущее значение i и увеличиваем i на единицу. Повторяем эти действия пока выполняется условие: i <= 10.
i += 1 то же самое, что и i = i + 1.

Цикл for

В Python есть еще одна конструкция для реализации циклов — цикл for.

for element in <список>:
  <блок кода>
  break

для каждого элемента списка <список>
присвой element элемент списка (имя переменной может быть любым)
выполни <блок кода>
если встретишь break, прервись (необязательное условие).

Примеры использования цикла for:

for i in [4, 5, 6]:
  print(i)
for i in [4, 5, 6]:
  if i % 2 == 0: # остаток от деления
    print(i)
#нахождение суммы элементов списка array
sum = 0
array = [45, 7, -934, 0, 2839]
for i in array:
  sum += i
print(sum)

Функции

Часто при работе вы будете сталкиваться с ситуациями, когда в вашей программе один и тот же код необходимо будет выполнять несколько раз. Такие части кода принято оформлять в функции. Мы уже сталкивались со стандартными функциями в Python. Например: print(), len(), sum().

Мы можем написать свои функции. Например, функцию func_sum, которая на вход получает 2 числа и возвращает их сумму:

def func_sum (a, b): #определение функции
  sum = a + b #тело функции
  return sum #возвращаемое значение

x = func_sum(5, 9) #вызов функции, в x записывается результат вызова функции

Использование сторонних библиотек

Обычно все лучшие решения наиболее популярных задач оформляются в виде библиотек. Чтобы “не изобретать велосипед”, программисты используют готовые решения для своих задач.

По ссылкам можно получить информацию о библиотеках.
https://docs.python.org/3/library/index.html — стандартные библиотеки Python.
https://pypi.org/ — каталог third-party библиотек.

Для вызова библиотек используется следующий синтаксис:
import <lib>  — подключить (использовать) библиотеку lib.
from import <lib> my_func — из библиотеки использовать объект my_func.
Пример использования стандартной библиотеки math:

import math #подключаем библиотеку math
math.sin(0) #вызываем функцию sin из библиотеки math

Мы кратко ознакомились с синтаксисом, работой с данными, условными конструкциями, циклами и функциями в Python


Дополнительные материалы

Рекомендованные статьи на русском языке:

https://pythonworld.ru/samouchitel-python
https://pythonworld.ru/osnovy/sintaksis-yazyka-python.html

Рекомендованные статьи на английском языке:

https://www.tutorialspoint.com/python/index.htm
https://www.learnpython.org/en/Hello%2C_World%21

Официальная документация:

https://docs.python.org/3/