Miroslav Kungurov 11 января 2021

🐍 Самоучитель для начинающих: как освоить Python с нуля за 30 минут?

Введение в Python за полчаса, а также подборка книг и YouTube-каналов на несколько месяцев интенсивного, но более вдумчивого изучения.

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

***

Установка Python

Python в Ubuntu предустановлен. Чтобы узнать версию Python, откроем терминал комбинацией клавиш Ctrl + Alt + T и введем следующую команду:

        python3 --version
    

Для Windows нужно скачать Python с официального сайта и установить как обычную программу.

Установка редактора кода

Для работы нам понадобится редактор кода (IDE). Самые популярные:

Для установки Atom в Ubuntu введем в терминале:

        wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
sudo apt-get update
sudo apt-get install atom
    
Рис. 1. Страница установки Atom для Windows
Рис. 1. Страница установки Atom для Windows

Для Windows скачаем Atom с официального сайта. После установки редактора кода установим для него плагин run-python-simply (есть и другие) для запуска Python. Два способа установки:

  • Перейдем на страничку плагина и нажмем кнопку Install.
  • Откроем Atom, перейдем во вкладку FileSettingsInstall , введем в поле поиска run-python-simply и установим его.

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

Создадим проект, в котором будем хранить код и другие файлы. Для этого перейдем во вкладку FileAdd Project Folder и выберем любую свободную папку.

Онлайн-редакторы кода

Если под рукой только смартфон, воспользуемся бесплатными онлайн-редакторами кода:

1. Синтаксис

Python использует отступы, чтобы обозначить начало блока кода:

        if 3 > 1:
    print("Три больше единицы") # Три больше единицы
    

Python выдаст ошибку, если вы пропустите отступ:

        if 3 > 1:
print("Три больше единицы") # Ошибка: IndentationError: expected an indented block 
    

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

2. Hello, World

Создадим файл example.py, где example – имя файла, .py – расширение, которое означает, что программа написана на языке программирования Python.

Напишем в example.py следующую строчку:

        print('Hello, World') # Hello, World
    

У нас установлен плагин run-python-simply и запустить код мы можем двумя способами:

  • перейти во вкладку PackagesRun Python SimplyToggle F5;
  • или нажать на клавишу F5.

После запуска кода появится окно терминала с результатом или ошибкой.

В нашем случае в терминале отобразится фраза Hello, World.

Здесь:

print() – функция, выводящая на экран фразу Hello, World.

'Hello, World' – строка (заключена в кавычки).

Также можно использовать переменную word, которой присвоим значение 'Hello, World':

        word = 'Hello, World'
print(word) # Hello, World


    

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

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

3. Типы данных

3.1. Строки

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

        "Cat and dog" # пример записи строки
'Cat and giraffe'
    

Операции со строками

Изменение регистра первого символа к верхнему регистру с помощью метода title():

        string = 'cat'
print(string.title()) # Cat


    

Преобразование всех символов к верхнему и нижнему регистру методами upper() и lower() соответственно:

        string = 'cat'
print(string.upper()) # CAT

string = 'DOG'
print(string.lower()) # dog
    

Объединение строк (конкатенация). Строки объединяются с помощью знака сложения +:

        first_animal = 'cat'
second_animal = 'dog'
all_animals = first_animal + ',' + ' ' + second_animal
print(all_animals) # cat, dog


    

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

        animal = 'Cat'
print(animal * 5) # CatCatCatCatCat
    

Вычисление длины строки. Чтобы определить длину строки воспользуемся встроенной функцией len() (сокращённое от англ. length):

        animal = 'Cat'
print(len(animal)) # 3
    
Рис. 2. Доступ к элементу строки по индексу в Python
Рис. 2. Доступ к элементу строки по индексу в Python

Индексация начинается с 0. В нашем случае символ C имеет индекс 0, a1, t2.

Для получения элемента по индексу воспользуемся квадратными скобками []:

        animal = 'Cat'
print(animal[0]) # C
    

В предыдущем примере по индексу мы получали один элемент строки. По срезу можно получить несколько элементов:

        animal = 'CatDog'
print(animal[1:3]) # at
print(animal[0:6:2]) # Cto – выводится нулевой элемент и каждый второй после него
    

Как формируется срез:

list_name[start:stop:step], где start – начало среза, stop – конец среза, step – шаг среза.

Получим с помощью среза последний элемент:

        animal = 'CatDog'
print(animal[-1]) # g
    

Все элементы, кроме первого:

        animal = 'CatDog'
print(animal[1:]) # atDog
    

Все элементы, кроме последнего:

        animal = 'CatDog'
print(animal[0:5]) # CatDo
print(animal[:5]) # CatDo
print(animal[:-1]) # CatDo
    

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

        animal = 'CatDog'
animal_copy = animal[:]
print(animal_copy) # CatDog
    

Методом replace() заменим символы в строке:

        animal = 'CatDog'
print(animal.replace('Cat', 'Dog')) # DogDog
    

В скобках метода replace() указана дополнительная информация: Cat – элемент, подлежащий замене на элемент Dog.

Для удаление пробелов слева и справа применяется метод strip(), только справа – rstrip(), только слева – lstrip():

        animal = ' CatDog  '
print(animal.strip()) # CatDog
print(animal.rstrip()) #  CatDog  – здесь остался пробел слева 
print(animal.lstrip()) # CatDog – здесь остался пробел справа 
    

Преобразование строки в список индивидуальных символов:

        animal = 'CatDog '
print(list(animal)) # ['C', 'a', 't', 'D', 'o', 'g', ' ']
    

3.2. Числа

Целые числа (int) не имеют дробной части:

        print(25 + 0 - 24) # 1
    

Число с плавающей точкой (float) имеет дробную часть:

        print(2.8 + 4.1) # 6.8999999999999995
    

Операции над числами:

        print(2 + 3) # Сложение: 5
print(5 - 4) # Вычитание: 1
print(5 * 5) # Умножение: 25
print(4 / 2) # Деление: 2.0
print(4 ** 4) # Возведение в степень: 256
    

Порядок операций. Выражение в скобках будет просчитываться в первую очередь:

        print(3*4 + 5) # 17
print(3*(4 + 5)) # 27
    

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

        print(int(5.156)) # 5
print(float(4)) # 4.0
    

3.3. Списки

Список (англ. list) – набор упорядоченных элементов произвольных типов. Списки задаются квадратными скобками [] и содержат объекты любого типа: строки, числа, другие списки и так далее. Элементы можно менять по индексу.

Создадим список animals и выведем его на экран:

        animals = ['cat', 'dog', 'giraffe']
print(animals) # ['cat', 'dog', 'giraffe']
    

Обратимся к второму элементу списка:

        animals = ['cat', 'dog', 'giraffe']
print(animals[1]) # dog
    

Чтобы изменить элемент списка, обратимся к нему по индексу и присвоим новое значение:

        animals = ['cat', 'dog', 'giraffe']
print(animals) # ['cat', 'dog', 'giraffe']

animals[2] = 'orangutan' # меняем третий элемент
print(animals)  # ['cat', 'dog', 'orangutan']

animals[2] = ['orangutan']
print(animals) # ['cat', 'dog', ['orangutan']] – список внутри списка, вложенный список
    

Для добавления элемента в конец списка воспользуемся методом append():

        animals = ['cat', 'dog', 'giraffe']
animals.append('tyrannosaurus')
print(animals) # ['cat', 'dog', 'giraffe', 'tyrannosaurus']
    

Метод insert() вставляет элемент по индексу:

        animals = ['cat', 'dog', 'giraffe']
animals.insert(1, 43)
print(animals) # ['cat', 43, 'dog', 'giraffe']
    

Число 43 вставляется на место с индексом 1, остальные элементы сдвигаются вправо. Первый элемент остается на прежнем месте.

Для удаления элемента из списка, обратимся к элементу по индексу, используя команду del:

        animals = ['cat', 'dog', 'giraffe']
del animals[2]
print(animals) # ['cat', 'dog']
    

Другой способ удаления – метод pop():

        animals = ['cat', 'dog', 'giraffe']
animals.pop(2)
print(animals) # ['cat', 'dog']
    

В двух предыдущих примерах мы удаляли элемент по его индексу. Теперь удалим элемент по его значению с помощью метода remove():

        animals = ['cat', 'dog', 'giraffe']
animals.remove('dog')
print(animals) # ['cat', 'giraffe']
    

Чтобы упорядочить список по алфавиту используем метод sort():

        animals = ['giraffe', 'cat', 'dog']
animals.sort()
print(animals) # ['cat', 'dog', 'giraffe']
    

Список в обратном порядке выводится методом reverse():

        animals = ['cat', 'dog', 'giraffe']
animals.reverse()
print(animals) # [giraffe', 'dog', 'cat']
    

Для определения длины списка воспользуемся функцией len():

        animals = ['cat', 'dog', 'giraffe']
print(len(animals)) # 3
    

3.4. Кортежи

Рис. 3. Доступ к элементам кортежа по индексу в Python
Рис. 3. Доступ к элементам кортежа по индексу в Python

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

        animals = ('cat', 'dog', 'giraffe')
print(animals[0]) # Получение элемента кортежа с индексом 0: cat
    

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

        animals = ('cat',)
print(animals) # ('cat',)
print(type(animals)) # <class 'tuple'> – кортеж

animals = ('cat')
print(animals) # cat
print(type(animals)) # <class 'str'> – строка
    

Конкатенация кортежей:

        print(('cat',) + ('dog', 2))  # ('cat', 'dog', 2)
    

Повторение кортежа:

        print(('cat', 'dog', 4) * 2) # ('cat', 'dog', 4, 'cat', 'dog', 4)
    

Срез кортежа:

        animals = ('cat', 'dog', 'giraffe')
print(animals[0:1]) # ('cat',)
print(animals[0:2]) # ('cat', 'dog')
    

Чтобы создать список из элементов кортежа применим функцию list():

        animals_tuple = ('cat', 'dog', 33)
animals_list = list(animals_tuple)
print(animals_list)  # ['cat', 'dog', 33]
    

3.5. Словари

Рис. 4. Устройство словаря в Python
Рис. 4. Устройство словаря в Python

Словарь – неупорядоченная коллекция произвольных элементов, состоящих из пар «ключ-значение». Словарь объявляется через фигурные скобки {}: dictionary = {'pets': 'cat', 'numbers': (1, 2)}, где pets и numbers – ключи, а cat, (1, 2) – значения. Если в списке мы получаем объект по его индексу, то в словаре по ключу.

Получим по ключам соответствующие значения из словаря dictionary:

        dictionary = {'pets': 'cat', 'numbers': (1, 2)}
print(dictionary['pets']) # cat
print(dictionary['numbers'])  # (1, 2)
print(dictionary['numbers'][1])  # 2
    

Чтобы добавить новую пару «ключ-значение» используем следующую запись словарь['новый_ключ'] = новое_значение:

        dictionary = {'pets': 'cat', 'numbers': (1, 2)}
dictionary['dinosaur'] = 'tyrannosaurus', 'pterodactylus'
print(dictionary) # {'pets': 'cat', 'numbers': (1, 2), 'dinosaur': ('tyrannosaurus', 'pterodactylus')}
    

Изменение существующего значения похоже на добавление нового значения словарь['существующий_ключ'] = новое_значение:

        dictionary = {'pets': 'cat', 'numbers': (1, 2)}
dictionary['pets'] = 'dog'
print(dictionary) # {'pets': 'dog', 'numbers': (1, 2)}
    

Командой del можно удалить ключ со значением:

        dictionary = {'pets': 'cat', 'numbers': (1, 2)}
del dictionary['pets']
print(dictionary) # {'numbers': (1, 2)}
    

3.6. Множества

Множества – неупорядоченные последовательности не повторяющихся элементов. Множество задается чрез фигурные скобки {}:

        animals_and_numbers = {'cat', 'dog', 99, 100}
print(animals_and_numbers) # {'cat', 99, 100, 'dog'}
    

Операции над множествами:

        animals_and_numbers = {'cat', 'dog', 99, 100}
numbers = {555, 99}
animals = {'cat', 'dog'}

print(animals_and_numbers.union(numbers)) # {'cat', 99, 100, 'dog', 555} – добавляет в множество animals_and_numbers элементы множества numbers
print(animals_and_numbers.intersection(numbers)) # {99} – возвращает множество, являющееся пересечением множеств animals_and_numbers и numbers
print(animals_and_numbers.difference(numbers)) # {'cat', 'dog', 100} – Возвращает разность множеств animals_and_numbers и numbers
print(animals_and_numbers.issuperset(animals)) # True – Возвращает True, если animals является подмножеством animals_and_numbers.


    

3.7. Файлы

С помощью функции open() мы создаем файловый объект для работы с файлами. Создадим в папке с python-файлом текстовой файл example.txt, напишем в нем слово test, сохраним и закроем. Следующий код открывает и выводит на экран содержимое текстового файла example.txt:

        with open('example.txt', 'r') as file:
    for line in file:
        print(line)
    

Здесь:

example.txt – путь к файлу и его имя. В нашем случае файл расположен в папке с выполняемой программой.

r – режим работы «только чтение».

Попробуем дозаписать числа в конец файла:

        numbers = ['0', '1', '2', '3']

with open('example.txt', 'a') as file:
    for number in numbers:
        file.write(number + '\n')

0 # в файл запишется последовательность чисел, каждое число с новой строчки
1
2
3
    

Здесь:

numbers – список чисел.

a – режим записи «в конец текстового файла».

\n – перенос на новую строчку.

Без переноса строки результат будет следующий:

        numbers = ['0', '1', '2', '3']

with open('example.txt', 'a') as file:
    for number in numbers:
        file.write(number)

0123 # результат записи без переноса строки 
    

4. Ввод данных

Для ввода данных применяется функция input():

        input_word = input('Введите какое-нибудь слово: ')
print('Слово: ' + input_word)
    

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

Рис. 5. Условный оператор if в Python
Рис. 5. Условный оператор if в Python

Оператор if выполняет код в зависимости от условия. Проверим, если число три меньше пяти, то выведем на экран слово true:

        if 3 < 5:
    print('true') # true
    

Попробуем оператор if-else. else переводится как «в другом случае». Когда условие if не выполняется, то идет выполнение кода после else:

        if 3 > 5:
    print('true')
else:
    print('false') # false
    

elif = else + if – код выполняется, если предыдущее условие ложно, а текущее истинно:

        number = 15
if number < 3:
    print('число меньше трех')
elif 4 < number < 10:
    print('число в промежутке от 4 до 10')
elif number > 10:
    print('число больше 10') # число больше 10
    

6. Цикл while

Рис. 6. Цикл while в Python
Рис. 6. Цикл while в Python

Напишем цикл, который 5 раз выведет на экран слово hello:

        x = 0
while x < 5:
    print('hello')
    x += 1

# получаем пять раз слово hello
hello
hello
hello
hello
hello
    

Здесь:

while – обозначение цикла.

x < 5 – условие, которое записывается после while. Каждый раз после выполнения цикла (после одной итерации) проверяется это условие. Если оно становится ложным, цикл прекращает работу.

print('hello') – вывести на экран слово hello.

x += 1 – это сокращенный способ записи x = x + 1. То есть при каждой итерации значение x увеличивается на единицу.

Бесконечный цикл записывается с помощью while True:

        while True:
    print('hello')

hello
hello
hello
hello
hello
…
    

7. Цикл for

Рис. 7. Цикл for в Python
Рис. 7. Цикл for в Python

Цикл for перебирает элементы последовательности:

        numbers = ['0', '1', '2', '3']
for i in range(0, len(numbers)):
    print(numbers[i])

# на экран выводятся числа 0, 1, 2 и 3
0
1
2
3

    

Здесь:

i – переменная, которая принимает значение из диапазона значений range(0, len(numbers)).

range(0, len(numbers)) – последовательность чисел от 0 до значения длины списка numbers.

print(numbers[i]) – тело цикла, выводит на экран i-й элемент списка numbers.

Второй вариант записи:

        numbers = ['0', '1', '2', '3']
for number in numbers:
    print(number)

# идентичный результат
0
1
2
3
    

8. Функции

Функция выполняет одну конкретную задачу и имеет имя. Напишем функцию greeting(), которая выводит на экран приветствие:

        def greeting(): # объявление функции
    print('hello') # тело функции

greeting() # запуск функции
    

Здесь:

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

print('hello') – выводит на экран слово hello.

Напишем функцию summation(), которая складывает два числа:

        def summation (a, b):
    return print(a + b)

summation(3, 8) # 11

    

Здесь:

a и b – аргументы функции.

return возвращает значение функции.

9. Модули

Модуль – файл, содержащий функции, классы и данные, которые можно использовать в других программах.

        from math import trunc

print(trunc(3.9)) # 3
    

Здесь:

from math import trunc – из встроенного в Python модуля math импортируем функцию trunc, которая отбрасывает дробную часть числа.

Это был импорт отдельной функции. Теперь импортируем весь модуль и обратимся к функции через модуль.имя_функции():

        import math

print(math.trunc(3.9))  # 3
    

10. Комментарии

Комментирование кода помогает объяснить логику работы программы. Однострочный комментарий начинается с хеш-символа #:

        a = 45 # комментарий к коду
    

Многострочный комментарий заключается с обеих сторон в три кавычки:

        """
a = 45
b = 99
"""
    

Литература

  • «Изучаем Python», Марк Лутц
  • «Программируем на Python», Майкл Доусон
  • «Изучаем программирование на Python», Пол Бэрри
  • «Начинаем программировать на Python», Тонни Гэддис
  • «Простой Python. Современный стиль программирования», Билл Любанович

Шпаргалки

Больше шпаргалок в нашей группе ВКонтакте.

YouTube-каналы и курсы

Бесплатные курсы на русском и английском языках в YouTube и на образовательных ресурсах:

На английском:

На русском:

Python в «Библиотеке Программиста»

***

Мы кратко познакомились с основными понятиями Python: команды, функции, операторы и типы данных. У этого языка низкий порог вхождения, простой синтаксис, поэтому вероятность освоить его человеку, который никогда не занимался программированием – высокая (по моей субъективной оценке – 90%).

***

На Python создают прикладные приложения, пишут тесты и бэкенд веб-приложений, автоматизируют задачи в системном администрировании, используют в нейронных сетях и анализе больших данных. Язык программирования можно изучить самостоятельно, так как много платных и бесплатных онлайн-тренажеров. Фундаментальным знаниям уделяют внимание меньше. Поэтому мы (Proglib + МГУ) запускаем онлайн-курс по математике в Data Science в формате прямого эфира с преподавателем. Пять месяцев, два раза в неделю по два академических часа. Старт курса 20 февраля. Ниже лекция преподавателя МГУ по комбинаторике для начинающих с примерами:

Лекция по комбинаторике для начинающих


Какие книги и курсы по Python нравятся вам? Пишите в комментариях.

ВАКАНСИИ

Senior C++ Developer
по итогам собеседования
Android developer
Новосибирск, по итогам собеседования
DevOps
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

Microsoft