Предисловие
Доброго времени суток, Хабр. Запускаю короткий курс статей, который охватывает ключевые навыки 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 также покрывает остальные основные кнопки вашего калькулятора:
Оператор | Название | Описание |
| Сложение | Сумма |
| Вычитание | Разница |
| Умножение | Произведение |
| Истинное деление | Частное |
| Деление с округлением | Частное |
| Модуль | Целочисленный остаток от деления |
| Возведение в степень |
|
| Отрицание | Противоположное к |
Одно интересное наблюдение заключается в том, что, в то время как ваш калькулятор, вероятно, имеет только одну кнопку для деления, 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
Послесловие
На этом первая статься подошла к концу. Спасибо всем кто читал и уделял время. Также надеюсь, что вы вынесли какую-либо полезную информацию и научились чему-то новому. Продолжайте развиваться и узнавать новое! До скорых встреч.