Python

Python

Wtmelon

Python: Привет, Мир!

Изучение нового языка программирования традиционно начинается с 'Hello, World!'. Это простая программа, которая выводит приветствие на экран и заодно знакомит с новым языком — его синтаксисом и структурой программы.

  Hello, World!

Этой традиции уже больше сорока лет, поэтому и мы не будем нарушать ее. В первом уроке мы напишем программу Hello, World!. Чтобы сделать это, нужно дать компьютеру специальную команду. В языке Python это — print().

Задание

Наберите в редакторе код из задания символ в символ и нажмите «Проверить».

print('Hello, World!')

Внимание: если вы напишете heLLo, woRld!вместо Hello, World!, то это будет считаться другим текстом, потому что заглавные и строчные буквы — это разные символы, отличающиеся регистром. В программировании регистр практически всегда имеет значение, поэтому привыкайте всегда обращать на него внимание!
——————————————————

Python: Комментарии

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

С их помощью добавляют пояснения, как работает код, какие ошибки нужно поправить или не забыть что-то добавить позже:

# Удалить строку ниже после реализации задачи по регистрации
print(10)

Комментарии в Python начинаются со знака # и могут появляться в любом месте программы. Они могут занимать всю строку. Если одной строки мало, то создается несколько комментариев:

# For Winterfell!
# For Lanisters!

Комментарий может находиться на строке после кода:

print('I am the King') # For Lannisters!

Задание

Создайте однострочный комментарий с текстом: You know nothing, Jon Snow!

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

——————————————————

Python: Инструкции (Statements)

Когда мы готовим блюдо, то четко следуем рецепту. Иначе еда окажется не такой, как ожидали. Это же правило действует и в программировании.

Чтобы увидеть на экране ожидаемый результат, нужно дать компьютеру четкие и пошаговые указания. Это можно сделать с помощью инструкций. Инструкция — это команда для компьютера, единица выполнения. Код на Python в этом случае — это набор инструкций. Его можно представить в виде пошагового рецепта.

Код на Python запускает интерпретатор — программу, которая выполняет инструкции строго по очереди. Как и шаги в рецепте, набор инструкций для интерпретатора пишутся по порядку и отделяются друг от друга переходом на следующую строку.

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

Посмотрим на пример кода с двумя инструкциями. При его запуске на экран последовательно выводятся два предложения:

print('Mother of Dragons.')
print('Dracarys!')
# => Mother of Dragons.
# => Dracarys!

https://replit.com/@hexlet/python-basics-instructions

Выше мы говорили, что инструкции отделяются друг от друга переходом на новую строку. Но есть и другой способ: их можно разделить точкой с запятой — ;:

print('Mother of Dragons.'); print('Drakarys!')

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

Лучше инструкции располагать друг под другом. Так коллегам будет удобнее читать ваш код, обслуживать его и вносить изменения.

Задание

Выведите на экран друг за другом три имени: RobertStannisRenly. В результате на экране должно отобразиться:

Robert
Stannis
Renly

Для каждого имени используйте свой собственный вызов print().

Интерпретатор — программа, выполняющая код на Python.
Инструкция (statement) — команда для компьютера, написанная на языке программирования. Код на Python — это набор инструкций, разделенных (чаще всего) переводом строки.

———————————————————

Python: Синтаксические ошибки

Если программа на Python написана синтаксически некорректно, то интерпретатор выводит на экран соответствующее сообщение. Также он указывает на файл и строчку, где произошла ошибка.

Синтаксическая ошибка возникает в том случае, когда код записали с нарушением грамматических правил. В естественных языках грамматика важна, но текст с ошибками обычно можно понять и прочитать. В программировании все строго. Мельчайшее нарушение — и программа даже не запустится. Примером может быть забытая ;, неправильно расставленные скобки и другие детали.

Вот пример кода с синтаксической ошибкой:

print('Hodor)

https://replit.com/@hexlet/python-basics-syntax-errors

Если запустить код выше, то мы увидим следующее сообщение:

$ python index.py
File "index.py", line 1
  print('Hodor)
              ^
SyntaxError: EOL while scanning string literal

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

Задание

Это задание не связано с уроком напрямую. Но будет полезным потренироваться с выводом на экран.

Выведите на экран:

What Is Dead May Never Die

———————————————————

Python: Арифметические операции

На базовом уровне компьютеры оперируют только числами. Даже в прикладных программах на высокоуровневых языках внутри много чисел и операций над ними. Но для старта достаточно знать обычную арифметику — с нее и начнем.

Например, для сложения двух чисел в математике мы пишем: 3 + 4. В программировании — то же самое. Вот программа, которая складывает два числа:

3 + 4

Арифметика в программировании практически не отличается от школьной арифметики.

Строчка кода 3 + 4 заставит интерпретатор сложить числа и узнать результат. Эта программа будет работать, но в ней нет смысла. По сути, мы не даем команду интерпретатору, мы просто говорим ему: «смотри, сумма трех и четырех». В реальной работе недостаточно сообщать интерпретатору о математическом выражении.

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

Нам нужно попросить интерпретатор сложить 3 + 4 И дать команду сделать что-то с результатом. Например, вывести его на экран:

# Сначала вычисляется сумма,
# затем она передается в функцию печати
print(3 + 4)

После запуска на экране появится результат:

7

Кроме сложения доступны следующие операции:

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

print(8 / 2)   # => 4.0 (При делении двух чисел получается тип данных float)
print(3 ** 2)  # => 9

https://replit.com/@hexlet/python-basics-arithmetics-basics

Иногда для удобства мы будем показывать в комментариях результат запуска строчек кода вот так: => РЕЗУЛЬТАТ. Например, # => 4.

Первая инструкция выведет на экран 4 (потому что 8 / 2 равно 4), а вторая инструкция выведет на экран 9 (потому что 32 равно 9).

Задание

Выведите на экран результат деления числа 81на9.

———————————————————

Python: Операторы

Знак операции, такой как +, называют оператором. Операторы выполняют операции над определенными значениями, которые называются операндами. Сами операторы — это обычно один или несколько символов. Реже — слово. Подавляющее большинство операторов соответствуют математическим операциям.

print(8 + 2)

https://replit.com/@hexlet/python-basics-arithmetics-operators

В этом примере + — это оператор, а числа 8 и 2— это операнды.

Когда мы складываем, у нас есть два операнда: один слева, другой справа от знака +. Операции, которые требуют наличия двух операндов, называются бинарными. Если пропустить хотя бы один операнд, например, 3 +, то программа завершится с синтаксической ошибкой.

Операции бывают не только бинарными, но и унарными — с одним операндом, и тернарными — с тремя операндами. Причем операторы могут выглядеть одинаково, но обозначать разные операции. Символы + и - используются не только как операторы. Когда речь идет про отрицательные числа, то знак минуса становится частью числа:

print(-3)  # => -3

Выше пример применения унарной операции к числу 3. Оператор минус перед тройкой говорит интерпретатору взять число 3 и найти противоположное, то есть -3. Это может сбить с толку, потому что -3 — это одновременно и число само по себе, и оператор с операндом. Но у языков программирования такая структура.

Задание

Напишите программу, которая посчитает разность между числами 6 и -81 и выведет ответ на экран.

Полезное

Всегда отбивайте арифметические операторы пробелами от своих операндов – это хороший стиль программирования.
Арифметическая операция — сложение, вычитание, умножение и деление.
Оператор — специальный символ, создающий операцию. Например, + создает операцию сложения.
Операнд — объект, который участвует в операции. 3 * 6: здесь 3 и 6 — операнды.
Унарная операция — операция с одним операндом. Например, -3 — унарная операция для получения числа, противоположного числу три.
Бинарная операция — операция с двумя операндами. Например, 3 + 9.

———————————————————

Python: Композиция операций

Рассмотрим пример:

print(2 * 4 * 5 * 10)

https://replit.com/@hexlet/python-basics-arithmetics-composition

Операции можно соединять друг с другом и вычислять все более сложные составные выражения. Чтобы представить, как происходят вычисления внутри интерпретатора, разберем пример: 2 * 4 * 5 * 10.

  1. Сначала вычисляется 2 * 4 и получается выражение 8 * 5 * 10
  2. Затем 8 * 5. В итоге имеем 40 * 10
  3. В итоге происходит последнее умножение, и получается результат 400

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

Задание

Реализуйте программу, которая вычисляет и выводит на экран значение выражения:

8 / 2 + 5 - -3 / 2

Не вычисляйте ничего самостоятельно, ваша программа должна производить все вычисления сама.

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

———————————————————

Python: Приоритет

Представим, что нужно вычислить такое выражение: 2 + 2 * 2. Именно так и запишем:

print(2 + 2 * 2)  # => 6

В школьной математике есть понятие «приоритет операции». Приоритет определяет, в какой последовательности должны выполняться операции. Умножение и деление имеют больший приоритет, чем сложение и вычитание, а приоритет возведения в степень выше всех остальных арифметических операций. Например: 2 ** 3 * 2 вычислится в 16.

Но нередко вычисления должны происходить в порядке, отличном от стандартного приоритета. Тогда приоритет нужно задавать круглыми скобками. Так было и в школе, например: (2 + 2) * 2. Скобки можно ставить вокруг любой операции. Они могут вкладываться друг в друга сколько угодно раз. Вот примеры:

print(3 ** (4 - 2))  # => 9
print(7 * 3 + (4 / 2) - (8 + (2 - 1)))  # => 14

Главное при этом соблюдать парность — закрывать скобки в правильном порядке. Это часто становится причиной ошибок не только у новичков, но и у опытных программистов. Для удобства ставьте сразу открывающую и закрывающую скобку, а потом пишите внутреннюю часть. Редактор на нашем сайте (и большинство других редакторов кода) делают это автоматически: вы пишете (, а редактор сразу добавляет ). Это касается и других парных символов, например, кавычек. О них поговорим в будущих уроках.

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

# Было
print(8 / 2 + 5 - -3 / 2)  # => 10.5

# Стало
print(((8 / 2) + 5) - (-3 / 2))  # => 10.5

https://replit.com/@hexlet/python-basics-arithmetics-priority

Важно запомнить: код пишется для людей. Код будут читать люди, а машины будут только исполнять его. Для машин код — корректный или некорректный. Для них нет «более» понятного или «менее» понятного кода.

Задание

Дано вычисление 70 * 3 + 4 / 8 + 2.

Расставьте скобки так, чтобы оба сложения (3 + 4) и (8 + 2) высчитывались в первую очередь. Выведите на экран результат.

Выражение — последовательность действий над данными, приводящая к каком-то результату, который можно использовать.

———————————————————

Python: Кавычки

В этом уроке мы разберемся, что такое строка и какую роль в коде играют кавычки.

Определить строку довольно просто — это некий набор символов. Представим, что у нас есть такие записи:

'Hello'
'Goodbye'
'G'
' '
''

Какие из этих вариантов — строки? На самом деле, все пять вариантов подходят:

  • С 'Hello' и 'Goodbye' все очевидно — мы уже работали с подобными конструкциями и называли их строками
  • 'G' и ' ' — тоже строки, просто в них всего по одному символу
  • '' — это пустая строка, потому в ней ноль символов

Строкой мы считаем все, что находится внутри кавычек: даже если это пробел, один символ или вообще отсутствие символов.

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

print("Dracarys!")

Теперь представьте, что вы хотите напечатать строчку Dragon's mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:

print('Dragon's mother')
# SyntaxError: invalid syntax

Такая программа не будет работать. С точки зрения Python строчка началась с одинарной кавычки, а потом закончилась после слова dragon. Дальше были символы s mother без кавычек — значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: '). Этот код содержит синтаксическую ошибку — это видно даже по тому, как подсвечен код.

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

print("Dragon's mother")

Теперь интерпретатор знает, что строка началась с двойной кавычки и закончиться должна тоже на двойной кавычке. А одинарная кавычка внутри стала частью строки.

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

Теперь представим, что мы хотим создать такую строку:

Dragon's mother said "No"

В ней есть и одинарные, и двойные кавычки. Нам нужно каким-то образом указать интерпретатору, что кавычки — это один из символов внутри строки, а не начало или конец строки.

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

# Экранируем кавычки вокруг No, чтобы интерпретатор
# распознал их как часть строки
print("Dragon's mother said \"No\"")
# => Dragon's mother said "No"

Обратите внимание, что в примере выше нам не пришлось экранировать одинарную кавычку (апостроф 's), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.

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

print("\\")
# => \

Задание

Напишите программу, которая выведет на экран:

"Khal Drogo's favorite word is "athjahakar""

Программа должна вывести на экран эту фразу в точности. Обратите внимание на кавычки в начале и в конце фразы:

"Khal Drogo's favorite word is "athjahakar""

———————————————————

Python: Экранированные последовательности

Мы хотим показать вот такой диалог:

- Are you hungry?
- Aaaarrrgh!

Попробуем вывести на экран строку с таким текстом:

print("- Are you hungry?- Aaaarrrgh!")
# => - Are you hungry?- Aaaarrrgh!

Как видите, результат получился не такой, как мы хотели. Строки расположились друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа \n:

print("- Are you hungry?\n- Aaaarrrgh!")
# => - Are you hungry?
# => - Aaaarrrgh!

\n — это пример экранированной последовательности (escape sequence). Такие последовательности еще называют управляющими конструкциями. Их нельзя увидеть в том же виде, в котором их набрали.

Набирая текст в Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:

- Привет!¶
- О, привет!¶
- Как дела?

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

Существует несколько десятков таких невидимых символов, но в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся:

  • табуляция \t — разрыв, который получается при нажатии на кнопку Tab
  • возврат каретки \r — работает только в Windows

Распознать такую управляющую конструкцию в тексте можно по символу \. Программисты часто используют перевод строки \n, чтобы правильно форматировать текст. Например, напишем такой код:

print("Gregor Clegane\nDunsen\nPolliver\nChiswyck")

Тогда на экран выведется:

Gregor Clegane
Dunsen
Polliver
Chiswyck

Когда работаете с символом перевода, учитывайте следующие моменты:

  1. Не важно, что стоит перед или после \n: символ или пустая строка. Перевод обнаружится и выполнится в любом случае
  2. Строка может содержать только \n:
  print('Gregor Clegane') # Строка с текстом
  print("\n") # Строка с невидимым символом перевода строки
  print('Dunsen') # Строка с текстом

Программа выведет на экран:

  Gregor Clegane


  Dunsen
  1. В коде последовательность \n выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ
  2. Если нужно вывести \n как текст (два отдельных печатных символа), то можно воспользоваться экранированием — добавить еще один \ в начале. Последовательность \\n отобразится как символы \ и n, которые идут друг за другом:
print("Joffrey loves using \\n")
# => Joffrey loves using \n

В Windows для перевода строк по умолчанию используется \r\n. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи Linux.

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

В таком случае перевод строки всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n.

Задание

Напишите программу, которая выводит на экран:

- Did Joffrey agree?
- He did. He also said "I love using \n".

При этом программа использует только один print(), но результат на экране должен выглядеть в точности, как показано выше.

Экранированная последовательность — специальная комбинация символов в тексте. Например, \n — это перевод строки.

———————————————————

Python: Конкатенация

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

Чтобы соединить строки, нужно выполнить конкатенацию:

# Оператор такой же, как и при сложении чисел,
# но здесь он имеет другой смысл (семантику)
print('Dragon' + 'stone')  # => Dragonstone

Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой. Вот еще несколько примеров:

print('Kings' + 'wood')      # => Kingswood
print('Kings' + 'road')      # => Kingsroad
print("King's" + 'Landing')  # => King'sLanding

Как видите, строки можно склеивать, даже если их записали с разными кавычками.

Пробел — такой же символ, как и другие, поэтому сколько пробелов поставите в строке, столько и получится в итоговой строке:

# Ставим пробел в левой части
print("King's " + 'Landing')  # => King's Landing

# Ставим пробел в правой части
print("King's" + ' Landing')  # => King's Landing

https://replit.com/@hexlet/python-basics-string-concatenation

Задание

Выведите на экран

Winter came for the House of Frey.

используя конкатенацию слов.

Если в редакторе есть запись # BEGIN и # END, то код нужно писать между этими строчками.
Конкатенация — операция соединения двух строк. Например, print("King's " + ' Landing')

———————————————————

Python: Что такое переменная

Представьте, что нам нужно напечатать на экран фразу Father! два раза. Эту задачу можно решить так:

print('Father!')
print('Father!')

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

А можно поступить по-другому. Чтобы не копировать выражение, достаточно создать с ней переменную:

# greeting - переводится как приветствие
greeting = 'Father!'
print(greeting)
print(greeting)
# => Father!
# => Father!

В строчке greeting = 'Father!' мы берем переменную с именем greeting и присваиваем ей значение 'Father!'. Переменная указывает на данные, которые в нее записали. Благодаря этому, данные можно использовать многократно и не дублировать их постоянно.

Когда переменная создана, можно ее использовать. Она подставляется в те места, где раньше стояла наша фраза. Когда код выполняется, интерпретатор доходит до строчки print(greeting) и подставляет содержимое переменной, а затем выполняет код.

Для имени переменной используется любой набор допустимых символов, к которым относятся буквы английского алфавита, цифры и знак _. При этом цифру нельзя ставить в начале. Имена переменных регистрозависимы, то есть имя hello и имя HELLO — это два разных имени для двух разных переменных. Регистр в Python имеет важное значение, никогда не забывайте про него.

Количество создаваемых переменных неограниченно. Большие программы содержат десятки и сотни тысяч имен переменных. Вот как выглядят две переменные внутри одной программы:

greeting1 = 'Father!'
print(greeting1)
print(greeting1)

greeting2 = 'Mother!'
print(greeting2)
print(greeting2)

https://replit.com/@hexlet/python-basics-variables-definition

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

Задание

Создайте переменную с именем motto и содержимым What Is Dead May Never Die!. Распечатайте содержимое переменной.

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

———————————————————


———————————————————


———————————————————


———————————————————


———————————————————


———————————————————


———————————————————


———————————————————


———————————————————




Report Page