Неформальное введение в Python
В питоне есть комментариию Они начинаются с # хэш символа и весь код после них не интерпретируется. Их можно писать где угодно и весь код после них не будет учитываться. Разве что только, если комментарий заключен в кавычки и является строковым литералом. Например hashtag = "#руководсвтоPython"
пару примеров
# первый комментарий spam = 1 # второй комментарий # ... и третий! text = "# А это не комментарий, потому что он в кавычках."
Использование Python в качестве калькулятора
Давайте попробуем несколько простых команд Python. Запустите интерпретатор и дождитесь основного приглашения >>>
. (Это не должно занять много времени.)
Числа
Python-интерпретатор работает как настоящий калькулятор. Он понимает знаки + - * /. Приоритеты и многое другое.
>>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 # деление всегда возвращает значение с плавающей запятой 1.6
Целые числа (например 2
, 4
, 20
) имеют тип int
, те , с дробной частью (например 5.0
, 1.6
) имеют тип float
. Мы увидим больше о числовых типах позже в этом уроке.
Деление ( /
) всегда возвращает число с плавающей запятой. Для получения целочисленного результата (исключая дробный результат) вы можете использовать //
оператор; для расчета остатка вы можете использовать %
:
>>> 17 / 3 # обычное деление возвращает float 5.666666666666667 >>> >>> 17 // 3 # целочисленное возвращает int 5 >>> 17 % 3 # оператор % возвращает остаток от деления 2 >>> 5 * 3 + 2 # результат * делитель + остаток 17
В Python можно использовать **
оператор для вычисления степеней:
>>> 5 ** 2 # квадрат пяти 25 >>> 2 ** 7 # 2 в степени 7 128
Знак равенства ( =
) используется для присвоения значения переменной:
>>> width = 20 >>> height = 5 * 9 >>> width * height 900
Если переменная не «определена» (ей не присвоено значение), попытка ее использования приведет к ошибке:
>>> n # пытаемся использовать неопределенную переменную Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'n' is not defined
Есть полная поддержка плавающей запятой; Если в вашем примере есть хотя бы одно значение с плавающей запятой, то конечный результат будет типом float
>>> 4 * 3.75 - 1 14.0
В интерактивном режиме последнее напечатанное выражение присваивается переменной _
. Это означает, что когда вы используете Python в качестве настольного калькулятора, несколько проще продолжить вычисления, например:
>>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax 12.5625 >>> price + _ # 100.50 + 12.5625 113.0625 >>> round(_, 2) #округлить до 2 значений после запятой 113.06
Эта переменная должна рассматриваться пользователем как доступная только для чтения. Не назначайте ему явно значение
В дополнение к int
и float
, Python поддерживает другие типы чисел, такие как Decimal
и Fraction
. Python также имеет встроенную поддержку комплексных чисел и использует j
или J
суффикс для обозначения мнимой части (например 3+5j
).
Строки
Помимо чисел, Python также может манипулировать строками, которые могут быть выражены несколькими способами. Они могут быть заключены в одинарные кавычки ( '...'
) или двойные кавычки ( "..."
) с одинаковым результатом. \
может использоваться для экранирования кавычек:
>>> 'spam eggs' # одинарные кавычки 'spam eggs' >>> 'doesn\'t' # юзай \' чтобы избежать одинраной кавычки "doesn't" >>> "doesn't" # ...или используй двойные кавычки "doesn't" >>> '"Yes," they said.' '"Yes," they said.' >>> "\"Yes,\" they said." '"Yes," they said.' >>> '"Isn\'t," they said.' '"Isn\'t," they said.'
При обычноом выводе в интепретатор python заключает вывод в кавычки. Чтобы измежать этого импользуйте функцию print()
>>> '"Isn\'t," they said.' '"Isn\'t," they said.' >>> print('"Isn\'t," they said.') "Isn't," they said. >>> s = 'First line.\nSecond line.' # \n переводит вывод на новую строку >>> s # без print(), \n включен в вывод 'First line.\nSecond line.' >>> print(s) # с print(), \n переводит на новую строку First line. Second line.
Если вы не хотите, чтобы предшествующие символы \
интерпретировались как специальные символы, вы можете добавить r
перед первой кавычкой:
>>> print('C:\some\name') # здесь \n обозначает новую строку! C:\some ame >>> print(r'C:\some\name') # напишите r перед кавычками C:\some\name
Строковые литералы могут занимать несколько строк. Одним из способов является использование тройных кавычек: """..."""
или '''...'''
. Конец строк автоматически включается в строку, но это можно предотвратить, добавив \
в конец строки. Следующий пример:
print("""\ Usage: thingy [OPTIONS] -h Display this usage message -H hostname Hostname to connect to """)
производит следующий вывод (обратите внимание, что начальный перевод строки не включен)
Usage: thingy [OPTIONS] -h Display this usage message -H hostname Hostname to connect to
Строки могут быть объединены (склеены) с +
оператором и повторены с помощью *
:
>>> # 3 раза 'un', перед 'ium' >>> 3 * 'un' + 'ium' 'unununium'
Два или более строковых литерала (т.е. те, которые заключены в кавычки) рядом друг с другом, автоматически объединяются.
>>> 'Py' 'thon' 'Python'
Эта функция особенно полезна, когда вы хотите разбить длинные строки:
>>> text = ('Put several strings within parentheses ' ... 'to have them joined together.') >>> text 'Put several strings within parentheses to have them joined together.'
Это работает только с двумя литералами, но не с переменными или выражениями:
>>> prefix = 'Py' >>> prefix 'thon' # нельзя соединять переменные и строки File "<stdin>", line 1 prefix 'thon' ^ SyntaxError: invalid syntax >>> ('un' * 3) 'ium' File "<stdin>", line 1 ('un' * 3) 'ium' ^ SyntaxError: invalid syntax
Если вы хотите объединить переменные или переменную и литерал, используйте +
:
>>> prefix + 'thon' 'Python'
Строки могут быть проиндексированы (подписаны), причем первый символ имеет индекс 0. Отдельного типа символов не существует; символ - это просто строка размера один:
>>> word = 'Python' >>> word[0] # символ в позиции 0 'P' >>> word[5] # символ в позици 5 'n'
Индексы также могут быть отрицательными числами, чтобы начать отсчет справа:
>>> word[-1] # послений симовол 'n' >>> word[-2] # предпоследний символ 'o' >>> word[-6] 'P'
Обратите внимание, что, поскольку -0 совпадает с 0, отрицательные индексы начинаются с -1.
В дополнение к индексации, нарезка также поддерживается. В то время как индексирование используется для получения отдельных символов, нарезка позволяет получить несколько:
>>> word[0:2] # символы с позиции 0 (включая) до 2 (исключая) 'Py' >>> word[2:5] # символы с позиции 2 (включая) до 5 (исключая) 'tho'
Обратите внимание, что начало всегда включено, а конец всегда исключен. Это гарантирует, что всегда равно :s[:i] + s[i:]s
>>> word[:2] + word[2:] 'Python' >>> word[:4] + word[4:] 'Python'
Индексы срезов имеют полезные значения по умолчанию; пропущенный первый индекс по умолчанию равен нулю, пропущенный второй индекс по умолчанию равен размеру разрезанной строки.
>>> word[:2] # character from the beginning to position 2 (excluded) 'Py' >>> word[4:] # characters from position 4 (included) to the end 'on' >>> word[-2:] # characters from the second-last (included) to the end 'on'
Один из способов помнить, как работают срезы, - это рассматривать индексы как указывающие между символами, причем левый край первого символа нумеруется 0. Тогда правый край последнего символа строки из n символов имеет индекс n , например:
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
Первая строка чисел дает положение индексов 0… 6 в строке; второй ряд дает соответствующие отрицательные показатели. Срез от i до j состоит из всех символов между ребрами, обозначенными i и j соответственно.
Для неотрицательных индексов длина среза является разностью индексов, если оба находятся в пределах границ. Например, длина word[1:3]
составляет 2.
Попытка использовать слишком большой индекс приведет к ошибке:
>>> word[42] # в слове только 6 символов Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
Однако индексы срезов вне диапазона обрабатываются изящно, когда используются для нарезки:
>>> word[4:42] 'on' >>> word[42:]
Строки Python не могут быть изменены - они неизменны . Следовательно, присвоение индексированной позиции в строке приводит к ошибке:
>>> word[0] = 'J' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment >>> word[2:] = 'py' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
Если вам нужна другая строка, вы должны создать новую:
>>> 'J' + word[1:] 'Jython' >>> word[:2] + 'py' 'Pypy'
Встроенная функция len()
возвращает длину строки:
>>> s = 'supercalifragilisticexpialidocious' >>> len(s) 34
Списки
Python знает несколько составных типов данных, используемых для группировки других значений. Наиболее универсальным является список , который можно записать в виде списка значений (элементов), разделенных запятыми, в квадратных скобках. Списки могут содержать элементы разных типов, но обычно все элементы имеют одинаковый тип.
>>> squares = [1, 4, 9, 16, 25] >>> squares [1, 4, 9, 16, 25]
Как и строки (и все другие встроенные типы), списки могут быть проиндексированы и разрезаны:
>>> squares[0] # индексирование выводит значение 1 >>> squares[-1] 25 >>> squares[-3:] # срез выводит новый список [9, 16, 25]
Все операции срезов возвращают новый список, содержащий запрошенные элементы. Это означает, что следующий фрагмент возвращает поверхностную копию списка:
>>> squares[:] [1, 4, 9, 16, 25]
Списки также поддерживают такие операции, как конкатенация:
>>> squares + [36, 49, 64, 81, 100] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
В отличие от строк, которые являются неизменяемыми , списки являются изменяемым типом, то есть можно изменить их содержимое:
>>> cubes = [1, 8, 27, 65, 125] # что-то здесь точно не так >>> 4 ** 3 # куб 4 - 64, а не 65 64 >>> cubes[3] = 64 # переместим неправильное значение >>> cubes [1, 8, 27, 64, 125]
Вы также можете добавить новые элементы в конец списка, используя append()
метод (подробнее о методах мы узнаем позже):
>>> cubes.append(216) # добавим куб 6 >>> cubes.append(7 ** 3) # и куб 7 >>> cubes [1, 8, 27, 64, 125, 216, 343]
Также возможно присвоение срезов, и это может даже изменить размер списка или полностью очистить его:
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> letters ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> # переместим некоторые значения >>> letters[2:5] = ['C', 'D', 'E'] >>> letters ['a', 'b', 'C', 'D', 'E', 'f', 'g'] >>> # теперь удалим их >>> letters[2:5] = [] >>> letters ['a', 'b', 'f', 'g'] >>> # удалим весь список, поменяв все элементы на ничего >>> letters[:] = [] >>> letters []
Встроенная функция len()
также применяется к спискам:
>>> letters = ['a', 'b', 'c', 'd'] >>> len(letters) 4
Можно вкладывать списки (создавать списки, содержащие другие списки), например:
>>> a = ['a', 'b', 'c'] >>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b'
Первые шаги к программированию
Конечно, мы можем использовать Python для более сложных задач, чем сложение двух и двух вместе. Например, мы можем написать начальную подпоследовательность ряда Фибоначчи следующим образом:
>>> # Серия Фибоначчи: ... # сумма двух элементов определяет следующее ... a, b = 0, 1 >>> while a < 10: ... print(a) ... a, b = b, a+b ... 0 1 1 2 3 5 8
Этот пример вводит несколько новых функций.
- Первая строка содержит множественное присваивание : переменные
a
иb
одновременно получают новые значения 0 и 1. В последней строке это используется снова. Выражения с правой стороны оцениваются слева направо. - Цикл while работает по принципу пока истина выполнять. Когда же выражение станет ложным(например будет равно нулю, пустой строке или переменая будет равна False) цикл перестанет выполняться
- Отступы. Для группировки контрукций используется оступы(в основном 4 пробела или один Tab). Оступы в питоне, как фигурные скобки в Си. Без них питон выдаст ошибку и не будет выполнять констркцию
- print()Функция записывает значение аргумента. Строки печатаются без кавычек, и между элементами вставляется пробел, так что вы можете красиво форматировать вещи, например так:
>>> i = 256*256 >>> print('The value of i is', i) The value of i is 65536
Ключевое слово аргумент end может быть использовано, чтобы избежать перевода строки после вывода, или завершить вывод другой строкой:
>>> a, b = 0, 1 >>> while a < 1000: ... print(a, end=',') ... a, b = b, a+b ... 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
Заключение
Пост довольно большой, но надеюсь он вам поможет глубже окунуться в python и лучше его понять
Пост создан для тг-канал @coolcoders