Изучение Python: от нуля до мастера. Часть 1

Изучение Python: от нуля до мастера. Часть 1

Nuances of programming

Перевод статьи TK: Learning Python: From Zero to Hero

Следующие части: Часть 2

Содержание:

  • Как работают переменные Python
  • Как работают блоки условий
  • Как работают циклы(while и for)
  • Как использовать списки: коллекции | массивы
  • Коллекция-словарь в виде ключ-значение
  • Как мы можем проводить итерации через эту структуры данных

Первым делом спросим себя, что такое Python? Создатель языка, Гвидо ван Россум, описывает его следующим образом:

"Язык программирования высокого уровня, главная идея которого - это простая читабельность и синтаксис, который позволяет программистам выражать концепцию программы парой строк кода"

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

Следующей причиной было то, что Python мультизадачный. Мы можем его использовать для анализирования данных, разработки сайтов, машинного обучения. Quora, Pinterest и Spotify используют именно Python для своего back-end'а. Хорошая мотивация, чтобы узнать чуть больше об этом.

Основы

1. Переменные

Вы можете думать о переменных, как о словах, что держат в себе какое-то значение. Очень просто.

В Python нет ничего проще, чем определить переменную и присвоить ей какое-то значение. Представьте, что мы ходим сохранить число 1 в переменной, которую назовём "one". Это будет выглядеть следующим образом

one = 1



Что может быть проще? И при этом вы только что присвоили значение 1 для переменной "one".

two = 2
some_number = 10000



И таким образом вы можете присвоить любое значение любой переменной. И как видно в примере кода повыше, переменная "two" хранит числовое значение 2, а переменная "some_number" хранит значение 10,000.

Помимо числовых значений, мы также можем использовать логические (true/false, в переводе истинно/ложно), строки, десятичные числа и много других типов.

# логические
true_boolean = True
false_boolean = False

# строки
my_name = "Leandro Tk"

# десятичные
book_price = 15.80



2. Контролирование потока: условные состояния

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

if True:
  print("Hello Python If")

if 2 > 1:
  print("2 is greater than 1")



2 больше, чем 1, поэтому выполняется "print"-команда.

Блок "else" выполнится при условии, если условие "if" ложно.

if 1 > 2:
  print("1 is greater than 2")
else:
  print("1 is not greater than 2")



Так как 1 не больше 2, то выполняется в блоке "else".

Также можно использовать "elif" условие:

if 1 > 2:
  print("1 is greater than 2"
elif 2 > 1:
  print("1 is not greater than 2")
else:
  print("1 is equal to 2")



3. Циклы / итерации

В Python, можно создавать циклы различными способами. Мы расскажем о двух: while и for.

Цикл While: до тех пор, пока условие истинно, код внутри цикла будет выполняться. Таким образом, следующий код напишет числа от 1 до 10.

num = 1

while num <= 10:
  print(num)
  num += 1



Циклу while нужно "условие повтора". Если оно остаётся истинным, итерации продолжаются. В приведённом примере, когда значение num становится 11, условие цикла становится ложным.

Ещё один небольшой пример, чтобы лучше понять цикл while:

loop_condition = True

while loop_condition:
  print("Loop Condition keeps: %s" %(loop_condition))
  loop_condition = False



Условие цикла(loop condition) установлено в True, поэтому цикл будет выполняться до тех пор, пока мы не переключим его в значение False.

Цикл for: в цилке for мы назначаем переменную "num" для самого цикла, который в свою очередь будет увеличивать значение этой переменной. Следующий код напишет числа от 1 до 10 точно так же, как и цикл while:

for i in range(1, 11):
  print(i)



Видите? Очень просто. Цикл начинается с 1 и продолжается до 11 элемента.

Списки: коллекция, массив, структура данных

Представьте что вы хотите сохранить значение 1 в переменной. или может теперь вы хотите сохранить 2. А ещё 3, 4, 5...

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

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

my_integers = [1, 2, 3, 4, 5]



Это действительно просто. Мы создали список и сохранили его в my_integers.

Но затем мы спросим себя: "А как нам получить нужное значение из списка?".

Хороший вопрос. В списках есть концепция, которая зовётся номером(индексом). Номером первого элемента в списке является 0, следующий получает 1 и так далее.

Чтобы донести это проще, мы можем представить список, у которого каждый элемент подписан своим номером. Как на следующей картинке:

Используя синтаксис Python не сложно понять и следующее:

my_integers = [5, 7, 1, 3, 4]
print(my_integers[0]) # 5
print(my_integers[1]) # 7
print(my_integers[4]) # 4



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

relatives_names = [
  "Toshiaki",
  "Juliana",
  "Yuji",
  "Bruno",
  "Kaio"
]

print(relatives_names[4]) # Kaio



Это работает точно так же, как и с числами. Неплохо.

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

Самая простая функция, которую можно использовать для этого - зовётся append. Работает она следующим образом:

bookshelf = []
bookshelf.append("The Effective Engineer")
bookshelf.append("The 4 Hour Work Week")
print(bookshelf[0]) # The Effective Engineer
print(bookshelf[1]) # The 4 Hour Work Week



Функция append донельзя проста. Вам всего лишь нужно использовать новый элемент(в примере выше это “The Effective Engineer”) как значение это функции.

Ну что же, достаточно о списках. Перейдём к следующей структуре данных.

Словарь: структура данных в виде ключ-значение

Теперь мы знаем, что списки пронумерованы числовыми значениями. Но что, если мы не хотим использовать числа для идентификации элемента? Некоторые виды структур данных могут использовать числа, строки, или другие виды идентификации.

Одним из таких типов является словарь. Словарь это коллекция пар ключ-значение. Вот так это выглядит:

dictionary_example = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}



Ключ указывает на значение. Чтобы получить доступ к какому-либо значению - нам нужно обратиться к его ключу. Делается это следующим образом:

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian"
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro   print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %s" %(dictionary_tk["nationality"])) # And by the way I'm Brazilian



Я создал словарь о себе. Моё имя, никнейм и национальность. Эти атрибуты ключи в словаре.

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

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

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

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro   print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %i and %s" %(dictionary_tk["age"], dictionary_tk["nationality"])) # And by the way I'm Brazilian



Здесь у нас пара из ключа(age) и значения(24). При этом ключ это строка, а значение это число.

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

dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

dictionary_tk['age'] = 24

print(dictionary_tk) # {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}



Нам просто нужно дописать значение для существующего ключа в словаре. Ничего сложного, не так ли?

Итерации: циклы для структур данных

Как описывалось выше - итерации в списках довольно просты. Обычно Python-разработчики используют цикл for. Давайте посмотрим как это выглядит:

bookshelf = [
  "The Effective Engineer",
  "The 4 hours work week",
  "Zero to One",
  "Lean Startup",
  "Hooked"
]

for book in bookshelf:
  print(book)



Таким образом, за каждую книгу на книжной полке(bookshelf) мы вызываем функцию print. Достаточно просто и интуитивно. Это Python.

Для хэш-структуры данных мы используем тот же цикл for, но в качестве счётчика выступает key:

dictionary = { "some_key": "some_value" }

for key in dictionary:
  print("%s --> %s" %(key, dictionary[key]))

# some_key --> some_value



Это пример того как мы используем этот цикл. За каждый ключ в словаре, мы используем print для вывода ключа и его значения.

Также есть другой способ сделать это используя функцию iteritems.

dictionary = { "some_key": "some_value" }

for key, value in dictionary.items():
  print("%s --> %s" %(key, value))

# some_key --> some_value



Мы назвали наши параметры как key и value, но в этом нет необходимости. Мы можем назвать их как угодно. Давайте проверим это:

dictionary_tk = {
"name": "Leandro",
"nickname": "Tk",
"nationality": "Brazilian",
"age": 24
}

for attribute, value in dictionary_tk.items():
  print("My %s is %s" %(attribute, value))

# My name is Leandro
# My nickname is Tk
# My nationality is Brazilian
# My age is 24



В данном примере мы использовали attribute, как параметр для ключей словаря. Как видим, всё работает корректно. Отлично!

Статью перевёл Дмитрий Хирш

Nuances of programming на Дзене!