Как написать 1000 7 на питоне
Python 3 — это современный язык, на котором просто и приятно писать программы.
Для печати значений в Питоне есть функция print(). Внутри круглых скобок через запятую мы пишем то, что хотим вывести. Вот программа, которая делает несколько вычислений:
print(5 + 10) print(3 * 7, (17 - 2) * 8) print(2 ** 16) # две звёздочки означают возведение в степень print(37 / 3) # один слэш — это деление с ответом-дробью print(37 // 3) # два слэша считают частное от деления нацело # это как операция div в других языках print(37 % 3) # процент считает остаток от деления нацело # это как операция mod в других языках
Для ввода данных в программу мы используем функцию input() . Она считывает одну строку.
Вот программа, которая считывает имя пользователя и приветствует его:
Пётр
print('Как вас зовут?') name = input() # считываем строку и кладём её в переменную name print('Здравствуйте, ' + name + '!')
Мы будем писать программы, которые считывают данные, перерабатывают их и выводят какой-то результат. При запуске на компьютере такие программы считывают данные, которые пользователь вводит с клавиатуры, а результат выводят на экран.
Попробуем написать программу, которая считывает два числа и выводит их сумму. Для этого считаем два числа и сохраним их в переменные a и b , пользуясь оператором присваивания = . Слева от оператора присваивания в программах на Питоне ставится имя переменной — например, строка из латинских букв. Справа от оператора присваивания ставится любое выражение. Имя станет указывать на результат вычисления выражения. Проиграйте эту программу и посмотрите на результаты её работы:
a = input() b = input() s = a + b print(s)
Мы видим, что программа выводит 57 , хотя в реальной жизни 5 + 7 будет 12 . Это произошло потому, что Питон в третьей строчке «сложил» две строки, а не два числа. В Питоне две строки складываются так: к первой строке приписывается вторая.
Обратите внимание, что в визуализаторе содержимое переменных a и b заключено в кавычки. Это означает, что в a и b лежат строки, а не числа.
В Питоне все данные называются объектами. Число 2 представляется объектом «число 2», строка ‘hello’ – это объект «строка ‘hello’ ».
Каждый объект относится к какому-то типу. Строки хранятся в объектах типа str , целые числа хранятся в объектах типа int , дробные числа (вещественные числа) — в объектах типа float . Тип объекта определяет, какие действия можно делать с объектами этого типа. Например, если в переменных first и second лежат объекты типа int , то их можно перемножить, а если в них лежат объекты типа str , то их перемножить нельзя:
first = 5 second = 7 print(first * second) first = '5' second = '7' print(first * second)
Чтобы преобразовать строку из цифр в целое число, воспользуемся функцией int() . Например, int(’23’) вернет число 23 .
Вот пример правильной программы, которая считывает два числа и выводит их сумму:
a = int(input()) b = int(input()) s = a + b print(s)
Введение в Python
Чтобы начать играть с Python, нам нужно открыть командную строку на твоём компьютере. Ты уже должна знать, как это сделать — мы изучали это в главе Введение в интерфейс командной строки.
Когда будешь готова, следуй приведенным ниже инструкциям.
Мы хотим открыть консоль Python, так что набери python , если работаешь в Windows, или python3 для Mac OS/Linux, и нажми enter .
$ python3 Python > (. ) Type "help", "copyright", "credits" or "license" for more information. >>>
Твоя первая команда Python!
После запуска Python командная строка изменилась на >>> . Для нас это означает, что сейчас мы можем использовать только команды на языке Python. Тебе не нужно вводить >>> — Python будет делать это за нас.
Если ты хочешь выйти из консоли Python, в любой момент — просто введи exit() или используй сочетание клавиш Ctrl + Z для Windows и Ctrl + D для Mac/Linux. Тогда ты больше не будешь видеть >>> .
Пока что мы не хотим выходить из консоли Python. Мы хотим узнать больше о ней. Давай начнём с чего-нибудь совсем простого. Например, попробуй набрать простое математическое выражение, вроде 2 + 3 , и нажми enter .
>>> 2 + 3 5
Прекрасно! Видишь, как выскочил ответ? Python знает математику! Ты можешь попробовать другие команды, например:
Чтобы вычислить степень числа, например, 2 в кубе, мы вводим:
>>> 2 ** 3 8
Поиграй с этим немного и затем вернись сюда :).
Как видишь, Python является прекрасным калькулятором. Если тебе интересно, что ещё можно сделать.
Строки
Как насчет твоего имени? Введи своё имя в кавычках, вот так:
>>> "Ola" 'Ola'
Ты только что создала свою первую строку! Это последовательность символов, которые могут быть обработаны компьютером. Строка должна всегда начинаться и заканчиваться одинаковым символом. Им может быть одинарная ( ‘ ) или двойная ( » ) кавычка (разницы нет!) Кавычки говорят Python’у, что внутри них находится строка.
Строки могут быть слиты воедино. Попробуй так:
>>> "Hi there " + "Ola" 'Hi there Ola'
Ты также можешь умножать строки на число:
>>> "Ola" * 3 'OlaOlaOla'
Если тебе нужно поставить апостроф внутри строки, то есть два способа сделать это.
Используй двойные кавычки:
>>> "Runnin' down the hill" "Runnin' down the hill"
или поставь перед апострофом обратную косую черту ( \ ):
>>> 'Runnin\' down the hill' "Runnin' down the hill"
Прикольно, да? Чтобы увидеть своё имя прописными буквами, просто набери:
>>> "Ola".upper() 'OLA'
Ты только что использовала метод upper своей строки! Метод (такой как upper() ) представляет собой набор инструкций, который должен выполнить Python над заданным объектом (в нашем случае: «Ola» ) при его вызове.
Если ты хочешь узнать количество букв в своём имени, то и для этого тоже существует функция!
>>> len("Ola") 3
Интересно, почему иногда мы вызываем функцию добавлением . к концу строки (как «Ola».upper() ), а иногда сначала пишем имя функции и затем помещаем строку в скобки? Ну, в некоторых случаях функции принадлежат объектам, например, функция upper() , которая может быть применена только к строкам. В этом случае мы называем функцию методом. В другом случае функции не относятся к чему-то конкретному и могут использоваться для различных типов объектов, например, функция len() . Вот почему мы передаем «Ola» в качестве параметра функции len .
Подведём итог
Хорошо, достаточно о строках. Пока ты узнала следующее:
- командная строка — ввод команд (кода) в интерактивную командную строку Python приводит к ответам на Python;
- числа и строки — в Python числа используются для вычислений, а строки — для текстовых объектов;
- операторы, такие как + и *, объединяют значения для получения нового;
- функции, такие как upper() и len(), выполняют действия над объектами.
Таковы основы каждого языка программирования, который ты можешь выучить. Готова к чему-то посложнее? Мы уверены, что готова!
Ошибки
Давай попробуем кое-что новенькое. Можем ли мы получить длину числа так же, как длину твоего имени? Введи len(304023) и нажми Enter :
>>> len(304023) Traceback (most recent call last): File "", line 1, in TypeError: object of type 'int' has no len()
Мы получили нашу первую ошибку! Иконкой мы будем обозначать код, который при запуске сработает не так, как ожидается. Совершение ошибок (даже преднамеренных) — важная часть обучения!
Она говорит о том, что у объектов типа «int» (целые числа) нет длины. Так что же мы можем сейчас сделать? Может быть, мы можем написать наше число в виде строки? У строк ведь есть длина, верно?
>>> len(str(304023)) 6
Сработало! Мы использовали функцию str внутри функции len . str() преобразует всё в строки.
- Функция str преобразует объекты в строки
- Функция int преобразует объекты в целые числа
Важно: мы можем преобразовать число в текст, но не всегда удается преобразовать текст в числа — например, каков будет результат int(‘hello’) ?
Переменные
Переменные — важное понятие в программировании. Переменная — это всего лишь имя для чего-то, чтобы использовать его позднее. Программисты используют переменные для хранения данных, чтобы их код был более читабельным, и для того, чтобы им не пришлось запоминать, что есть что.
Допустим, мы хотим создать новую переменную с именем name :
>>> name = "Ola"
Видишь? Это очень легко! Просто введи: name равно Ola.
Как ты уже заметила, твоя программа не возвращает ничего, как было ранее. Так откуда мы знаем, что переменная действительно существует? Просто введи name и нажми Enter :
>>> name 'Ola'
Ура! Твоя первая переменная:)! Ты всегда можешь изменить то, к чему она относится:
>>> name = "Sonja" >>> name 'Sonja'
Ты также можешь использовать переменные и в функциях:
>>> len(name) 5
Круто, правда? Переменными, конечно, может быть что угодно, и цифры тоже! Попробуй следующее:
>>> a = 4 >>> b = 6 >>> a * b 24
Но что делать, если мы использовали неправильное имя? Можешь догадаться, что произойдет? Давай попробуем!
>>> city = "Tokyo" >>> ctiy Traceback (most recent call last): File "", line 1, in NameError: name 'ctiy' is not defined
Ошибка! Как ты можешь видеть, в Python есть различные типы ошибок, эта называется NameError. Python выдаст эту ошибку при попытке использовать переменную, которая пока не определена. При возникновении этой ошибки проверь свой код, чтобы узнать, не написала ли ты неправильно имя переменной.
Попрактикуйся в этом какое-то время и посмотри, что ты сможешь сделать!
Функция print
>>> name = 'Maria' >>> name 'Maria' >>> print(name) Maria
Если просто ввести name , интерпретатор Python вернет строковое представление переменной ‘name’, которым, в нашем случае, являются буквы M-a-r-i-a, окруженные одинарными кавычками, ». Когда ты вводишь print(name) , Python «печатает» содержание переменной на экран, без кавычек, что удобнее.
Как мы увидим позднее, print() пригодится, когда нам будет нужно печатать что-то изнутри функций или когда мы захотим напечатать что-то на нескольких строчках.
Списки
Помимо строк и целых чисел Python имеет богатую коллекцию других типов объектов. Сейчас мы собираемся представить тебе один из них — list (список). Списки — это именно то, о чём ты подумала: объекты, которые являются списками других объектов 🙂
Давай начнем с создания списка:
Отлично, это пустой список. Не особенно полезен, да? Давай создадим список лотерейных номеров. Мы не хотим повторять их каждый раз, так что присвоим список переменной:
>>> lottery = [3, 42, 12, 19, 30, 59]
Замечательно, у нас есть список! Что мы можем с ним сделать? Для начала посмотрим, как много лотерейных номеров в нашем списке. Есть идеи, какую функцию можно использовать для этого? Ты её уже знаешь!
>>> len(lottery) 6
Точно! len() вернет тебе количество объектов в списке. Удобно, правда? Пожалуй, мы теперь отсортируем его:
>>> lottery.sort()
Эта команда не возвращает ничего, она просто меняет порядок номеров в списке. Давайте выведем его на экран и посмотрим, что получилось:
>>> print(lottery) [3, 12, 19, 30, 42, 59]
Как видишь, номера в списке теперь отсортированы от меньшего к большему. Поздравляем!
Может, нам нужно обратить порядок? Давай сделаем это!
>>> lottery.reverse() >>> print(lottery) [59, 42, 30, 19, 12, 3]
Просто, правда? Если хочешь добавить что-то к своему списку, то можешь воспользоваться этой командой:
>>> lottery.append(199) >>> print(lottery) [59, 42, 30, 19, 12, 3, 199]
Если ты хочешь получить только первый номер в списке, то можешь воспользоваться индексами. Индекс — это номер позиции в списке, на котором находится нужное нам значение. Программисты предпочитают начать считать с 0, так что первому объекту в списке соответствует индекс 0, следующему —1, и так далее. Попробуй ввести:
>>> print(lottery[0]) 59 >>> print(lottery[1]) 42
Как видишь, ты можешь обратиться к различным объектам в своем списке, используя имя списка и индекс объекта в квадратных скобках.
Чтобы удалить что-либо из списка, тебе понадобятся индексы, с которыми мы уже разобрались выше, и команда pop() . Давай попробуем закрепить пройденное на примере: мы будем удалять первый элемент из нашего списка.
>>> print(lottery) [59, 42, 30, 19, 12, 3, 199] >>> print(lottery[0]) 59 >>> lottery.pop(0) 59 >>> print(lottery) [42, 30, 19, 12, 3, 199]
Сработало как по маслу!
В качестве дополнительной тренировки попробуй следующие индексы: 6, 7, 1000, -1, -6 и -1000. Можешь предсказать результат? Видишь логику работы?
Ты можешь найти перечень всех методов, относящихся к списку, в этой главе официальной документации Python: https://docs.python.org/3/tutorial/datastructures.html
Словари
Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Dictionaries.
Словари схожи со списками, но ты обращаешься к значениям словаря по ключу, а не по индексу. Ключом может быть любая строка или число. Давай создадим пустой словарь:
Это показывает, что мы создали пустой словарь. Ура!
Теперь попробуй следующую команду (можешь заменить значения на своё имя, страну и т.д.):
>>> participant = 'name': 'Ola', 'country': 'Poland', 'favorite_numbers': [7, 42, 92]>
Этой командой ты создала переменную participant с тремя парами ключ/значение:
- ключ name , указывающий на значение ‘Ola’ (объект типа строка ),
- ключ country , указывающий на значение ‘Poland’ (еще одна строка ),
- и ключ favorite_numbers , указывающий на значение [7, 42, 92] (объект типа список с тремя числами внутри).
Значение конкретного ключа можно узнать следующим образом:
>>> print(participant['name']) Ola
Видишь, синтаксис похож на работу со списком. Но вместо того, чтобы запоминать индекс, тебе нужно помнить ключ.
Что случится, если мы спросим у Python значение несуществующего в словаре ключа? Можешь предположить? Давай попробуем и узнаем наверняка!
>>> participant['age'] Traceback (most recent call last): File "", line 1, in KeyError: 'age'
Смотри, другая ошибка! Эта называется KeyError. Python услужливо напоминает, что ключа ‘age’ нет в словаре.
Когда стоит использовать словарь, а когда список? Это хороший вопрос для самостоятельного размышления. Сделай предположение перед тем, как читать дальше.
- Тебе нужна упорядоченная последовательность элементов? Список — наш выбор.
- Тебе нужны сочетания ключ/значение, чтобы быстро искать значения (по ключу) в дальнейшем? Словарь отлично подойдет.
Словари, как и списки, изменяемы, т. е. они могут быть изменены после того, как были созданы. Ты можешь добавить новые пары ключ/значение в словарь следующим образом:
>>> participant['favorite_language'] = 'Python'
Так же как в примере со списками, использование функции len() вернёт число пар ключ/значение в словаре. Попробуй сама:
>>> len(participant) 4
Надеюсь, всё вышеизложенное понятно. 🙂 Готова к новым приключениям со словарями? На следующей строке тебя ждут изумительные вещи.
Ты можешь использовать команду pop() для удаления элементов из словаря. Скажем, ты хочешь удалить элемент с ключом ‘favorite_numbers’ . Просто набери следующую команду:
>>> participant.pop('favorite_numbers') [7, 42, 92] >>> participant 'country': 'Poland', 'favorite_language': 'Python', 'name': 'Ola'>
Как видишь, пара ключ/значение с ключом ‘favorite_numbers’ была удалена.
Помимо этого, ты можешь заменить значение, связанное с уже существующим ключом. Набери:
>>> participant['country'] = 'Germany' >>> participant 'country': 'Germany', 'favorite_language': 'Python', 'name': 'Ola'>
Значение, на которое ссылается ключ ‘country’ , изменилось с ‘Poland’ на ‘Germany’ . 🙂 Захватывает? Ещё бы! Ты выучила еще одну потрясающую штуку!
Подведём итог
Шикарно! Теперь ты знаешь немало о программировании. Мы познакомились с:
- ошибками — теперь ты знаешь как читать и анализировать ошибки, которые возникают, если Python не понимает твоей команды;
- переменными — именами для объектов, которые упрощают твой код и делают его более читабельным;
- списками — последовательностями объектов в заданном порядке;
- словарями — объектами, хранящими пары ключ/значение.
Готова к продолжению? 🙂
Сравнения
Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Comparisons.
В программировании часто надо что-то сравнивать. Что проще всего сравнить друг с другом? Числа, конечно. Давай посмотрим, как это работает:
>>> 5 > 2 True >>> 3 < 1 False >>> 5 > 2 * 2 True >>> 1 == 1 True >>> 5 != 2 True
Мы передали Python несколько чисел для сравнения. Как ты можешь заметить, Python сравнивает не только числа, но и результаты методов (например, умножения). Неплохо, правда?
Хочешь спросить, почему мы написали двойной символ равенства == , чтобы проверить, одинаковы ли числа? Потому что одинарные символ равенства = уже задействован под присваивание значения переменным. Ты всегда, всегда должна писать два символа равенства == , если хочешь проверить, одинаковы ли объекты. Мы также можем проверить, различаются ли объекты. Для этого мы используем != , как показано в примере выше.
Дадим Python еще два задания:
>>> 6 >= 12 / 2 True >>> 3 2 False
Супер! Хочешь еще? Тогда попробуй вот это:
>>> 6 > 2 and 2 < 3 True >>> 3 > 2 and 2 < 1 False >>> 3 > 2 or 2 < 1 True
Ты можешь передать Python столько чисел, сколько захочешь, и он будет возвращать ответ! Хитро, правда?
- and — если ты используешь оператор and , оба сравнения по обе стороны от него должны быть True (верны), чтобы результат всей команды был равен True.
- or — если ты используешь оператор or , достаточно одному из сравнений по обе стороны от него быть равным True, чтобы результат всей команды также равнялся True.
Ты когда-нибудь слышала выражение «сравнивать тёплое с мягким»? Попробуем сделать что-то подобное в Python:
>>> 1 > 'django' Traceback (most recent call last): File "", line 1, in TypeError: '>' not supported between instances of 'int' and 'str'
Как мы видим, Python не знает, как сравнить число ( int ) и строку ( str ) между собой. Поэтому он просто возвращает нам ошибку TypeError и предупреждает, что объекты заданных типов не могут быть сравнены.
Логические значения
Между прочим, ты только что познакомилась с новым типом объектов в Python. Он называется Boolean (логический) — и это, наверное, самый простой тип из всех.
Существует только два логических объекта в Python:
- True (Истина),
- False (Ложь).
Чтобы Python понимал тебя, ты всегда должна писать True с заглавной буквы (остальные прописные). true, TRUE, tRUE не будут восприниматься — только True. (Та же логика применима к False, само собой.)
Ты можешь присваивать переменным логические значения! Смотри сюда:
>>> a = True >>> a True
>>> a = 2 > 5 >>> a False
Попрактикуйся с логическими значениями на примере этих выражений:
- True and True
- False and True
- True or 1 == 1
- 1 != 2
Поздравляем! Логические значения — одна из самых классных фишек программирования, и ты только что научилась ими пользоваться!
Сохраняй!
До сих пор мы писали весь код в интерактивной консоли, где Python сразу анализировал, обрабатывал и выполнял наши команды. Мы были ограничены одной строкой. Обычно, программы сохраняются в файлах и выполняются интерпретатором или компилятором нашего языка программирования. Пока мы только просили интерпретатор Python выполнять наши однострочные команды из консоли. Однако нам понадобится больше места для следующих задач, поэтому задача минимум:
- закрыть интерактивную консоль Python;
- открыть наш текстовый редактор;
- сохранить код в новом файле;
- запустить его!
Чтобы закрыть интерактивную консоль Python, просто набери функцию exit() :
>>> exit() $
Это вернёт тебя в командную строку.
В главе Текстовый редактор мы выбрали себе редактор. Нам нужно открыть его сейчас и записать следующий код в новый файл (или, если ты используешь Chromebook, создай новый файл в облачной IDE и открой файл, который будет во встроенном редакторе кода):
print('Hello, Django girls!')
Очевидно, ты уже искушенный Python разработчик, так что не стесняйся добавить что-нибудь по своему вкусу из ранее изученного.
Теперь нам нужно сохранить файл с кодом и дать ему подходящее имя. Давай назовем его python_intro.py и сохраним на рабочий стол. Мы можем назвать файл как хотим, но важно, чтобы название заканчивалось на .py. Расширение .py говорит операционной системе, что это исполняемый файл python, и Python может его запустить.
Примечание Ты должна уже была заметить одну из крутейших вещей в редакторах кода: цвета! В интерактивной консоли Python весь текст был одного цвета, сейчас же функция print должна отличаться по цвету от текста, который передается в неё в качестве аргумента. Это называется «синтаксическая подсветка», и это действительно удобная штука для программирования. Цвет подсветки может подсказать тебе о незакрытой кавычке или опечатке в ключевом слове (таком как def в определении функции, с которым мы скоро познакомимся). Это одна из причин, по которой мы используем редакторы кода 🙂
После сохранения файла пришло время запустить его! Используя навыки из раздела о командной строке, открой терминал и поменяй текущую директорию на рабочий стол.
Для Mac команда будет выглядеть так:
$ cd ~/Desktop
Как написать программу на Python каждый раз отнимающая 7

Уважаемые, модераторы. Этот пост посвящен токийскому Гулю, поэтому я не считаю этот пост оффтопиком, заранее спасибо за понимание.

Привет, Деды!(Инсайды конечно)

Сомневаюсь, что никто из вас не занимался программированием на языке Python.
Python — простейший язык программирования (остальные его достоинства сне лень писать)
Так вот, сегодня я вас научу вас писать лёгкую программу, чтобы вычитать 1000 — 7 пока это не станет возможным!
Сначала я покажу вам весь код, а потом объясню, что где когда.
ВНИМАНИЕ! ПИТОН ЧУВСТВИТЕЛЕН К РЕГИСТРУ (ЗАГЛАВНЫЕ И СТРОЧНЫЕ БУКВЫ) ЕСЛИ У ВАС, ЧТО-ТО ВЫЗВАЛО ОШИБКУ, ТО СКОРЕЕ ВСЕГО ВЫ НЕ СДЕЛАЛИ ВСЕ НЕ ТАК КАК У МЕНЯ!

Теперь перейдем к пояснению!
import time — команда «призыв библиотеки»
В питоне куча библиотек или модификаций, но для оптимизации работы Python, их нужно вызывать.
Библиотека time поможет нам чуть позже.
a = 1000 — переменная.
Переменные в питоне — это важнейший компонент всех кодов. Переменные проще говоря сундучок, в который можно положить любые текстовые данные, от числовых значений, до Рассказа.
Их можно назвать как вашей душеньке угодно, но существуют некоторые ограничения (читай вложение под текстом

while a > 0: — знакомьтесь Цикл вайл!
Из названия понятно, что он что-то зацикливает. Объясню как это работает.
Цикл будет выполняться, пока выполняется условие, если что-то не соответствует условию, то цикл прерывается.
while (здесь пишем любое условие):(ДВОИТОЧИЕ ОБЯЗАТЕЛЬНО)
Нужно нажать таб или 3 раза пробел, это называется табуляция. В Питон она означает что, то, или иное действие принадлежит циклу или условию. Если оно вне табуляции, то оно не будет принадлежать ничему.
while (здесь пишем любое условие):

a = a — 7 — команда обновления переменной.
Переменная a становится на 7 меньше.
Причём обновить ее можно как вашей душеньке угодно!
Умножение (a = a*8);
Деление без остатка ( a = a//2);
Деление, которое оставляет только остаток (a = a%8);
Возведение в степень (a = a**3)
print — команда вывода. «Вскроет» содержимое переменной, напечатает текст, короче Сенко для вас!

print(‘Ощихитео щихитео’) — типичный пример этой команды. Выводит текст написанный в кавычках.
time.sleep(0.1) — это плод библиотеки! Команда заставляющая выполнять цикл раз в 0.1 секунды. Значение в скобках можно заменить на любое.
В итоге он будет каждую миллисекунду отнимать 7. А когда переменная а будет меньше нуля, то он напишет ощихитео.

Правила по созданию переменных:
Питон чувствителен к РЕГИСТРУ(Заглавные, строчные буквы).
Значит, что переменные:
Будут совершенно разными.
Вы можете назвать переменную как вам душе угодно, но на английском языке.
Moskva, most, trolleybus — разрешено.
Москва, мост, троллейбус — точно нельзя использовать!
Нельзя использовать ЗАПРЕЩЕНЫЕ СИМВОЛЫ, пробелы и числа в названии переменной().
И ещё нельзя называть переменные командой в Питоне:
Переменная print = 44 нельзя использовать!
Иначе Питон выдаст вам ошибку.
Срезы — Python: Списки
Работать с одиночными элементами вы уже умеете. Настало время перейти к очень интересному инструменту, который Python предоставляет для работы с целыми подмножествами элементов списка: к так называемым срезам (slices).
Синтаксис описания срезов
Срезы встроены в язык и снабжены своим собственным синтаксисом — настолько широко они используются. Срез записывается так же, как записывается обращение к элементу списка по индексу:
some_list[START:STOP:STEP]
Всего у среза три параметра:
- START — индекс первого элемента в выборке
- STOP — индекс элемента списка, перед которым срез должен закончиться. Сам элемент с индексом STOP не будет входить в выборку
- STEP — шаг прироста выбираемых индексов
Математически говоря, во множество будут входить индексы элементов, которые будут выбраны:
Например, срез [3:20:5] означает выборку значений с индексами 3, 8, 13 и 18.
При этом любой из трех параметров среза может быть опущен и вместо соответствующего параметра будет выбрано некое значение по умолчанию:
- Умолчательный START означает «от начала списка»
- Умолчательный STOP означает «до конца списка включительно»
- Умолчательный STEP означает «брать каждый элемент»
Вот несколько примеров с разными наборами параметров:
- [:] или [::] — весь список
- [::2] — нечетные по порядку элементы
- [1::2] — четные по порядку элементы
- [::-1] — все элементы в обратном порядке
- [5:] — все элементы, начиная с шестого
- [:5] — все элементы, не доходя до шестого
- [-2:1:-1] — все элементы от предпоследнего до третьего в обратном порядке. Во всех случаях выборки от большего индекса к меньшему нужно указывать шаг
Срезы могут работать в двух режимах: собственно выборка и присваивание.
Выборка элементов
Срезы-выборки работают со списками, кортежами, строками. Результатом применения выборки всегда становится новое значение соответствующего типа — список, кортеж, строка:
'hello'[2:] # 'llo' (1, "foo", True, None)[2:] # (True, None) [1, 2, 3, 4, 5][2:] # [3, 4, 5]
Сразу сделаем несколько замечаний по использованию выборок:
- Кортежи чаще всего содержат разнородные элементы, поэтому срезы для них менее полезны, чем распаковка и перепаковка: тяжело удерживать в голове типы элементов вместе с индексами
- При выборке по срезу [:] создается новая копия списка, поэтому именно так обычно список и копируют
- Срез порождает новый список или кортеж, но для каждого выбранного элемента копируется только ссылка
Присваивание срезу
В отличие от строк и кортежей списки могут изменяться по месту. Одним из вариантов модификации является присваивание срезу. Срезу с указанным шагом можно присвоить список, содержащий соответствующее количество новых элементов:
l = [1, 2, 3, 4, 5, 6] l[::2] = [0, 0, 0] print(l) # => [0, 2, 0, 4, 0, 6]
Если вы попробуете присвоить срезу с шагом неверное количество элементов, то получите ошибку:
l = [1, 2, 3, 4] l[::2] = [5, 6, 7] # Traceback (most recent call last): # File "", line 1, in # ValueError: attempt to assign sequence of size 3 to extended slice of size 2
Если срез непрерывный, то есть шаг не указан и индексы идут подряд, то свободы нам дается больше. Такому срезу можно присвоить как больше элементов — тогда список вырастет, так и меньше, что приведет к урезанию списка:
l = [1, 2, 3] l[2:] = [4, 5] print(l) # => [1, 2, 4, 5] l[1:-1] = [100] print(l) # => [1, 100, 5] l[:] = [] print(l) # => []
Сначала список растет, потом уменьшается, а под конец вообще становится пустым — и все с помощью компактного, но мощного синтаксиса срезов.
Срезы-значения
Хоть срезы и имеют специальную поддержку со стороны синтаксиса, но мы можем создавать и использовать срезы сами по себе — как обычные значения.
Значение среза можно сконструировать с помощью функции slice :
first_two = slice(2) each_odd = slice(None, None, 2) print(each_odd) # => slice(None, None, 2) l = [1, 2, 3, 4, 5] print(l[first_two]) # => [1, 2] print(l[each_odd]) # => [1, 3, 5]
Функция slice принимает от одного до трех параметров — те самые START , STOP и STEP . При вызове функции с одним параметром, функция вызывается с параметром STOP .
Если вы хотите пропустить один из параметров, то подставьте вместо него None . Также None можно использовать и в записи срезов в квадратных скобках — там он так же будет означать пропуск значения.
На месте параметров среза могут быть любые выражения, лишь бы эти выражения вычислялись в целые числа или None .
Соотношение START и STOP
В срезе элемент с индексом STOP не попадает в выборку, в отличие от элемента с индексом START .
У такого поведения есть одна особенность. Какой бы неотрицательный индекс n мы ни выбрали, для любого списка будет соблюдаться указанное равенство:
l == l[:n] + l[n:]
Посмотрим на такой пример:
s = 'Hello!' print(s[:2] + s[2:]) # => 'Hello!' print(s[:4] + s[4:]) # => 'Hello!' print(s[:0] + s[0:] == s) # => True print(s[:100] + s[100:] == s) # => True
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях: