Как стать автором
Обновить

Pythonista. Привет, Python

Время на прочтение5 мин
Количество просмотров7.5K

Предисловие

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

Привет, Python!

Python был назван в честь популярного британского комедийного телешоу 1970-х "Летающий цирк Монти Пайтона", поскольку автор был поклонником этого телешоу.

Просто ради удовольствия попробуйте прочитать приведенный ниже код и предсказать, что он будет делать при запуске. (Если вы не знаете, это нормально!) Он приурочен скетчу Монти Пайтона про спам.

spam_amount = 0
print(spam_amount)

# Заказ спам, яйца, спам, спам, бекон и спам (еще 4 порции спама)
spam_amount = spam_amount + 4

if spam_amount > 0:
    print("But I don't want ANY spam!")

viking_song = "Spam " * spam_amount
print(viking_song)
Output

0

But I don`t want ANY spam!

Spam Spam Spam Spam

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

spam_amount = 0

Присвоение переменной: здесь мы создаем переменную с именем spam_amount и присваиваем ей значение 0 используя =, что называется оператором присваивания.  

Обратите внимание: если вы программировали на других языках (например, Java или C ++), вы могли заметить некоторые вещи, которые Python не требует от нас здесь:

• нам не нужно объявлять spam_amount перед присвоением ему значения

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

print(spam_amount)

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

# Заказ спам, яйца, спам, спам, бекон и спам (еще 4 порции спама)
spam_amount = spam_amount + 4

Первая строка выше - это комментарий. В Python комментарии начинаются с символа #.

Далее мы видим пример переопределения. Переопределение значения существующей переменной выглядит так же, как создание новой переменной - по-прежнему используется оператор присваивания =.

В этом случае значение, которое мы присваиваем spam_amount, включает простое арифметическое действие с  его предыдущим значением. Когда он встречает эту строку, Python оценивает выражение в правой части = (0 + 4 = 4), а затем присваивает это значение переменной в левой части.

if spam_amount > 0:
    print("But I don't want ANY spam!")

viking_song = "Spam Spam Spam"
print(viking_song)

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

Обратите внимание, как мы указываем, какой код принадлежит if. "But I don't want ANY spam! " выведется, только если spam_amount положительный. Но дальше (например, print (viking_song)) код должен выполняться несмотря ни на что. Как мы (и Python) это различаем?

Двоеточие (:) в конце строки if указывает, что начинается новый «блок кода». Последующие строки с отступом являются частью этого блока кода. Некоторые другие языки используют {фигурные скобки} для обозначения начала и конца блоков кода. Использование в Python значимых пробелов может удивить программистов, которые привыкли к другим языкам, но на практике это приводит к более согласованному и читаемому коду, чем языки, которые не требуют отступов блоков кода.

Последующие строки, относящиеся к viking_song, не имеют отступа с дополнительными 4 пробелами, поэтому они не являются частью блока кода if. Мы увидим больше примеров блоков кода с отступом позже, когда мы будем определять функции и использовать циклы.

Этот фрагмент кода также является нашим первым знакомством со строками в ​​Python:

"But I don't want ANY spam!"

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

viking_song = "Spam " * spam_amount
print(viking_song)

Оператор * можно использовать для умножения двух чисел (3 * 3 равно 9), но, что довольно интересно, мы также можем умножить строку на число, чтобы получить версию, которая повторяется столько раз. Python разрешает несколько маленьких трюков, подобных этому, где операторы типа * и + имеют разное значение в зависимости от того, к чему они применяются. (Технический термин для этого - перегрузка оператора)

Числа и арифметика в Python

Мы уже видели пример переменной, содержащей число выше:

spam_amount = 0

«Число» - неформальное название для такого рода вещей, но если мы хотим быть более техническими, мы можем спросить Python, как он описывает тип вещи, которым является spam_amount:

type(spam_amount)
int

Здесь int - сокращение от integer. Есть еще один вид чисел, с которым мы часто сталкиваемся в Python:

type(19.95)
float

float - это число с плавающей точкой, которое очень полезно для представления таких вещей, как вес или пропорции.

type() - еще одна встроенная функция, которую мы встречаем (после print()), и ее следует запомнить. Очень полезно иметь возможность спросить Python «к какому типу вещей относиться это?».

Естественное желание действий с числами - выполнять арифметические операции. Мы видели оператор + для сложения и оператор * для умножения. Python также покрывает остальные основные кнопки вашего калькулятора:

Оператор

Название

Описание

a + b

Сложение

Сумма a и b

a - b

Вычитание

Разница a и b

a * b

Умножение

Произведение a и b

a / b

Истинное деление

Частное a и b

a // b

Деление с округлением

Частное a и b, без дробных частей

a % b

Модуль

Целочисленный остаток от деления a на b

a ** b

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

a в степени b

-a

Отрицание

Противоположное к а

Одно интересное наблюдение заключается в том, что, в то время как ваш калькулятор, вероятно, имеет только одну кнопку для деления, Python может выполнять два вида. «Истинное деление» - это именно то, что делает ваш калькулятор:

print(5 / 2)
print(6 / 2)
2.5
3.0

Это всегда дает нам float

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

print(5 // 2)
print(6 // 2)
2
3

Вы можете придумать, где это будет полезно?

Порядок действий

В арифметике, которую мы изучали в школе, есть соглашения о порядке, в котором выполняются операции. В англоязычной литературе можно встретить технику запоминания порядка с помощью мнемоники, такой как PEMDAS - скобки, возведение в степень, умножение/деление, сложение/вычитание (Parentheses, Exponents, Multiplication/Division, Addition/Subtraction).

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

8 - 3 + 2
7
-3 + 4 * 2
5

Иногда порядок операций по умолчанию не соответствует нашему желанию: 

hat_height_cm = 25
my_height_cm = 190
# Какой у меня рост в метрах в шляпе?
total_height_meters = hat_height_cm + my_height_cm / 100
print("Height in meters =", total_height_meters, "?")
Height in meters = 26.9 ?

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

total_height_meters = (hat_height_cm + my_height_cm) / 100
print("Height in meters =", total_height_meters)
Height in meters = 2.15

Встроенные функции для работы с числами

Функции min и max возвращают минимум и максимум своих аргументов соответственно:

print(min(1, 2, 3))
print(max(1, 2, 3))
1
3

Функция abs возвращает абсолютное значение своего аргумента: 

print(abs(32))
print(abs(-32))
32
32

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

print(float(10))
print(int(3.33))
# Их даже можно вызывать для строк
print(int('807') + 1)
10.0
3
808

Послесловие

На этом первая статься подошла к концу. Спасибо всем кто читал и уделял время. Также надеюсь, что вы вынесли какую-либо полезную информацию и научились чему-то новому. Продолжайте развиваться и узнавать новое! До скорых встреч.

Теги:
Хабы:
Всего голосов 11: ↑3 и ↓8-5
Комментарии8

Публикации

Истории

Работа

Data Scientist
78 вакансий
Python разработчик
119 вакансий

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань