Factorio
Игра, которая заслуженно нравится инженерам и людям технического склада ума. Полное прохождение игры - неплохой показатель умения решать различные технические проблемы. Цель игры - построить автоматизированную фабрику и запустить ракету, на фабрике случаются разные ошибки и недостатки материалов, всегда нужно находить новые ресурсы и пути.
Для продвижения в игре нужно исследовать новые технологии и всегда автоматизировать процессы. На хабре есть статья, как в этой игре делаю проверки перед собеседованиями. Я тоже строю фабрику в этой игре в перерывах между решением задачек на Python, прикрепил две самые важные части своей фабрики к сообщению.
Игра, которая заслуженно нравится инженерам и людям технического склада ума. Полное прохождение игры - неплохой показатель умения решать различные технические проблемы. Цель игры - построить автоматизированную фабрику и запустить ракету, на фабрике случаются разные ошибки и недостатки материалов, всегда нужно находить новые ресурсы и пути.
Для продвижения в игре нужно исследовать новые технологии и всегда автоматизировать процессы. На хабре есть статья, как в этой игре делаю проверки перед собеседованиями. Я тоже строю фабрику в этой игре в перерывах между решением задачек на Python, прикрепил две самые важные части своей фабрики к сообщению.
👍10🤔2🤬2🤩2👎1🤡1
Какой из данных языков программирования является интерпретируемым? 🤔
Anonymous Quiz
0%
Go
5%
C
5%
Pascal
86%
Python
5%
Swift
0%
C++
0%
Rust
👍8
Срезы строк
С помощью среза мы можем получить несколько символов строки, создав диапазон индексов, разделенных двоеточием str0[x:y].
Диапазон срезов похож на диапазон range(). Первый индекс - начало среза(включительно), второй индекс - конец среза(не включительно).
В срезе можно использовать отрицательные индексы.
Полная статья
Друзья, я написал подробную статью про срезы. Ссылка: https://vc.ru/u/2666229-batal-kanal/945708-pro-crezy-v-python-prostym-yazykom
С помощью среза мы можем получить несколько символов строки, создав диапазон индексов, разделенных двоеточием str0[x:y].
Диапазон срезов похож на диапазон range(). Первый индекс - начало среза(включительно), второй индекс - конец среза(не включительно).
В срезе можно использовать отрицательные индексы.
Полная статья
Друзья, я написал подробную статью про срезы. Ссылка: https://vc.ru/u/2666229-batal-kanal/945708-pro-crezy-v-python-prostym-yazykom
vc.ru
Про cрезы в Python(простым языком) — Batal Kanal на vc.ru
С помощью среза мы можем получить несколько символов строки, создав диапазон индексов, разделенных двоеточием str0[x:y]. Пример:
👍11👏3🤓1
Методы строк
Всем привет!👋 Выше я уже рассказывал про методы строк(upper() и lower()). Давайте изучим ещё пару методов!
Функция - это фрагмент кода для решения задачи. Примеры встроенных функций: int(), min(), max().
Метод - это функция, которая тесно работает с объектом. Примеры встроенных методов: lower() upper(), swapcase().
capitalize() - метод, который возвращает ту же строку, но в нижнем регистре и только самый первый символ в верхнем регистре.
Из 'pYThOn' получится 'Python'.
title() - метод, который возвращает ту же строку, но в нижнем регистре и первый символ каждого слова в верхнем регистре.
Из 'I'm learning Python' получится 'I'M Learning Python'.
У метода простой алгоритм, из-за этого символы после апострофа считаются за новое слово и начинаются с верхнего регистра.
swapcase() - метод, который возвращает ту же строку, но меняет регистр каждого символа.
Из 'pYThon' получится "PytHON'
Забавно, что каждый метод можно легко запомнить с помощью знаний английского:
title — заголовок
swapcase - поменять регистр
capitalize - писать прописными буквами
Всем привет!👋 Выше я уже рассказывал про методы строк(upper() и lower()). Давайте изучим ещё пару методов!
Функция - это фрагмент кода для решения задачи. Примеры встроенных функций: int(), min(), max().
Метод - это функция, которая тесно работает с объектом. Примеры встроенных методов: lower() upper(), swapcase().
capitalize() - метод, который возвращает ту же строку, но в нижнем регистре и только самый первый символ в верхнем регистре.
Из 'pYThOn' получится 'Python'.
title() - метод, который возвращает ту же строку, но в нижнем регистре и первый символ каждого слова в верхнем регистре.
Из 'I'm learning Python' получится 'I'M Learning Python'.
У метода простой алгоритм, из-за этого символы после апострофа считаются за новое слово и начинаются с верхнего регистра.
swapcase() - метод, который возвращает ту же строку, но меняет регистр каждого символа.
Из 'pYThon' получится "PytHON'
Забавно, что каждый метод можно легко запомнить с помощью знаний английского:
title — заголовок
swapcase - поменять регистр
capitalize - писать прописными буквами
👍8😁2
Отличия между методами find(), rfind(), index(), rindex().
find() - метод, который находит индекс вхождения первого символа заданной подстроки и если подстрока будет не найдена, то метод возвращает -1. Метод проверяет строку с первого символа до последнего.
rfind() - этот метод похож на метод find(), но rfind() проверяет строку с последнего символа до первого(наоборот).
index() - этот метод похож на метод find(), но если подстрока будет не найдена, то метод index() возвращает ошибку.
rindex() - этот метод похож на метод index(), но rindex() проверяет строку с последнего символа до первого.
Все отличия выделены жирным шрифтом.
find() - метод, который находит индекс вхождения первого символа заданной подстроки и если подстрока будет не найдена, то метод возвращает -1. Метод проверяет строку с первого символа до последнего.
rfind() - этот метод похож на метод find(), но rfind() проверяет строку с последнего символа до первого(наоборот).
index() - этот метод похож на метод find(), но если подстрока будет не найдена, то метод index() возвращает ошибку.
rindex() - этот метод похож на метод index(), но rindex() проверяет строку с последнего символа до первого.
Все отличия выделены жирным шрифтом.
🔥9👍6👌3
И снова методы строк...
Есть несколько методов для проверки, какие типы символов содержаться в строке.
islower() - этот метод возвращает True, если все символы строки находятся в нижнем регистре и строка не пустая и False в противном случае.
isupper() - этот метод возвращает True, если все символы строки находятся в верхнем регистре и строка не пустая и False в противном случае.
isalpha() - этот метод возвращает True, если строка состоит только из буквенных символов и строка не пустая и False в противном случае.
isdigit() - этот метод возвращает True, если строка является целым числом(или же просто строка состоит только из чисел, ведь, например, в строке '123.456' есть ещё и точка) и строка не пустая и False в противном случае.
isalnum() - этот метод возвращает True, если строка состоит только из буквенных символов и цифр.
isspace() - этот метод возвращает True, если строка состоит только из пробелов или знаков табуляции(\t, \n, \r (\b не входит), возможно, есть какие-то ещё, но я знаю и слышал только про такие).
isprintable() - этот метод возвращает True, если строку можно вывести в консоль(это не \n, \t, \r, \b и другие).
isidentifier() - этот метод возвращает True, если строка подходит для названия переменной в Python(например, она не должна начинаться с цифры).
Есть ещё похожие методы(isdecimal(), isnumeric()), но в основном они взаимодействуют с большим количеством систем исчисления и сложны для понимания.
Есть несколько методов для проверки, какие типы символов содержаться в строке.
islower() - этот метод возвращает True, если все символы строки находятся в нижнем регистре и строка не пустая и False в противном случае.
isupper() - этот метод возвращает True, если все символы строки находятся в верхнем регистре и строка не пустая и False в противном случае.
isalpha() - этот метод возвращает True, если строка состоит только из буквенных символов и строка не пустая и False в противном случае.
isdigit() - этот метод возвращает True, если строка является целым числом(или же просто строка состоит только из чисел, ведь, например, в строке '123.456' есть ещё и точка) и строка не пустая и False в противном случае.
isalnum() - этот метод возвращает True, если строка состоит только из буквенных символов и цифр.
isspace() - этот метод возвращает True, если строка состоит только из пробелов или знаков табуляции(\t, \n, \r (\b не входит), возможно, есть какие-то ещё, но я знаю и слышал только про такие).
isprintable() - этот метод возвращает True, если строку можно вывести в консоль(это не \n, \t, \r, \b и другие).
isidentifier() - этот метод возвращает True, если строка подходит для названия переменной в Python(например, она не должна начинаться с цифры).
Есть ещё похожие методы(isdecimal(), isnumeric()), но в основном они взаимодействуют с большим количеством систем исчисления и сложны для понимания.
👍7👏2
Метод format() или f-строки?
Или легче всего форматировать строки с помощью конкатенации?
format() - метод, который заполняет свои заполнители заданными параметрами.
Пример:
name = input()
text = 'Hi, {}'.format(name)
f-строки - способ форматирования, который появился в версии 3.6, с таким способом код становится намного читабельнее и работает намного быстрее format().
Пример:
name = input()
text = f'Hi, {name}'
Ответ: f-строки считаются более быстрым и читабельным способом.
Или легче всего форматировать строки с помощью конкатенации?
format() - метод, который заполняет свои заполнители заданными параметрами.
Пример:
name = input()
text = 'Hi, {}'.format(name)
f-строки - способ форматирования, который появился в версии 3.6, с таким способом код становится намного читабельнее и работает намного быстрее format().
Пример:
name = input()
text = f'Hi, {name}'
Ответ: f-строки считаются более быстрым и читабельным способом.
👍10❤3🔥2
ASCII и Uncode
Любые данные в памяти должны храниться в виде числа в двоичной системе исчисления. Сначала символ переводится в специальную кодировку, а затем из этой кодировки в двоичный код. Есть разные таблицы этих цифровых кодов.
В таблице символов ASCII есть 128 разных цифровых кодов, а в таблице Unicode хранятся разные символы очень многих языков, таблица всегда пополняется и насчитывает уже больше сотни тысяч разных кодировок.
chr() и ord() в Python
В Python есть два метода для работы с этими кодировками.
chr() - переводит кодировку в символ по таблице Unicode.
ord() - переводит символ в кодировку по таблице Unicode.
Любые данные в памяти должны храниться в виде числа в двоичной системе исчисления. Сначала символ переводится в специальную кодировку, а затем из этой кодировки в двоичный код. Есть разные таблицы этих цифровых кодов.
В таблице символов ASCII есть 128 разных цифровых кодов, а в таблице Unicode хранятся разные символы очень многих языков, таблица всегда пополняется и насчитывает уже больше сотни тысяч разных кодировок.
chr() и ord() в Python
В Python есть два метода для работы с этими кодировками.
chr() - переводит кодировку в символ по таблице Unicode.
ord() - переводит символ в кодировку по таблице Unicode.
👍7
Разбор вчерашнего кода💻
Мы присваиваем переменной список с городами и выводим его.
При выводе списка, не распаковав его, он сохраняет квадратные скобки, запятые и при строковых типах данных сохраняются кавычки, если кавычки были двойные, то они становятся одинарными. Но почему ответ оказался с двойными кавычками?🐍
Если посмотреть повнимательнее, то перед двойными кавычками стоят одинарные и программа не сможет преобразовать двойные кавычки, так как в элементе уже содержатся одинарные кавычки.
Мы присваиваем переменной список с городами и выводим его.
При выводе списка, не распаковав его, он сохраняет квадратные скобки, запятые и при строковых типах данных сохраняются кавычки, если кавычки были двойные, то они становятся одинарными. Но почему ответ оказался с двойными кавычками?🐍
Если посмотреть повнимательнее, то перед двойными кавычками стоят одинарные и программа не сможет преобразовать двойные кавычки, так как в элементе уже содержатся одинарные кавычки.
👍10🔥3❤2
append() и extend()
Эти два метода служат для добавления элементов в список.
append() - добавляет элемент в конец списка. Список может быть уже с элементами или пустой. В качестве параметров он может принимать многие типы данных(в том числе и сами списки).
extend() - дополняет список заданным списком в параметрах. Если в качестве параметра задать строку, то он примет строку, как список и добавит каждый символ в список отдельно.
Эти два метода служат для добавления элементов в список.
append() - добавляет элемент в конец списка. Список может быть уже с элементами или пустой. В качестве параметров он может принимать многие типы данных(в том числе и сами списки).
extend() - дополняет список заданным списком в параметрах. Если в качестве параметра задать строку, то он примет строку, как список и добавит каждый символ в список отдельно.
👍6👏3
Работа со списками
Многие встроенные методы и функции со строками подходят для работы со списками. Главное отличие списков от строк:
Списки - изменяемые, а строки неизменяемые.
len() - встроенная функция, которая возвращает количество элементов в списке.
Срезы и индексация - в списка тоже есть индексация, но в отличии от строк, под индексом списка хранится целый элемент, а не символ.
del - с помощью оператора del мы можем удалить элемент из списка по его индексу.
in, not in - эти операторы определяют, находится ли заданный элемент(полностью без изменения) в списке.
Многие встроенные методы и функции со строками подходят для работы со списками. Главное отличие списков от строк:
Списки - изменяемые, а строки неизменяемые.
len() - встроенная функция, которая возвращает количество элементов в списке.
Срезы и индексация - в списка тоже есть индексация, но в отличии от строк, под индексом списка хранится целый элемент, а не символ.
del - с помощью оператора del мы можем удалить элемент из списка по его индексу.
in, not in - эти операторы определяют, находится ли заданный элемент(полностью без изменения) в списке.
👍7👏3✍2👌1
Почему вывод '\' выдаёт ошибку и как это исправить?
Если мы попытаемся вывести '\'(print('\')), то мы получим ошибку.
Компилятор посчитает это за незаконченный управляющий символ(\t, \b, \n, \r и другие). Чтобы исправить эту ошибку вместо нужного количества обратных слэшей, мы должны вводить вдвое больше.
'\' - '\\'
'\\' - '\\\\'
'\\\' - '\\\\\\'
Если мы попытаемся вывести '\'(print('\')), то мы получим ошибку.
Компилятор посчитает это за незаконченный управляющий символ(\t, \b, \n, \r и другие). Чтобы исправить эту ошибку вместо нужного количества обратных слэшей, мы должны вводить вдвое больше.
'\' - '\\'
'\\' - '\\\\'
'\\\' - '\\\\\\'
👍5🤔5
Начало недели списков!
Друзья, давайте проведём неделю списков. Я буду рассказывать про методы, функции и интересные фишки со списками, а в воскресенье я проведу опрос с интересной задачей!
Ну что ж, начинаем?!
Метод insert(Индекс: , Объект: ) - этот метод принимает 2 параметра, он вставляет заданный элемент по заданному индексу в список(не удаляя элемент, который был под этим индексом до этого, а сдвигая его и последующие элементы). Если передать методу несуществующий положительный аргумент, то он разместит элемент в конце списка. А при отрицательном(несуществующем) индексе заполнит элемент в начало списка.
Метод remove(Объект: ) - этот метод принимает 1 параметр, он удаляет первый заданный элемент(именно по заданному элементу, а не по заданному индексу). Если элемент не найден, то метод возвращает ошибку, этого можно избежать с помощью условного оператора с in. Важно, что remove() удаляет только первый элемент, чтобы удалить все элементы, нужно будет использовать его с while и in или с for и count() (про count() я расскажу позже)
Друзья, давайте проведём неделю списков. Я буду рассказывать про методы, функции и интересные фишки со списками, а в воскресенье я проведу опрос с интересной задачей!
Ну что ж, начинаем?!
Метод insert(Индекс: , Объект: ) - этот метод принимает 2 параметра, он вставляет заданный элемент по заданному индексу в список(не удаляя элемент, который был под этим индексом до этого, а сдвигая его и последующие элементы). Если передать методу несуществующий положительный аргумент, то он разместит элемент в конце списка. А при отрицательном(несуществующем) индексе заполнит элемент в начало списка.
Метод remove(Объект: ) - этот метод принимает 1 параметр, он удаляет первый заданный элемент(именно по заданному элементу, а не по заданному индексу). Если элемент не найден, то метод возвращает ошибку, этого можно избежать с помощью условного оператора с in. Важно, что remove() удаляет только первый элемент, чтобы удалить все элементы, нужно будет использовать его с while и in или с for и count() (про count() я расскажу позже)
👍7🤔4🤓1
Неделя списков! (день #2)
Всем привет! Продолжается наша неделя списков.🐍
Метод clear(Без параметров) - этот метод полностью очищает список(делает его пустым).
pop(Индекс:) - этот метод удаляет элемент по его индексу(именно по индексу), pop() сохраняет удалённый элемент в переменную, к которой он присвоен, то есть просто возвращает удалённый элемент.
Всем привет! Продолжается наша неделя списков.🐍
Метод clear(Без параметров) - этот метод полностью очищает список(делает его пустым).
pop(Индекс:) - этот метод удаляет элемент по его индексу(именно по индексу), pop() сохраняет удалённый элемент в переменную, к которой он присвоен, то есть просто возвращает удалённый элемент.
👍4🤓4
