День #3 нашей недели списков!📃
Метод reverse(Без параметров) - этот метод полностью переворачивает последовательность элементов в списке(инвертирует его🔀), он не создаёт новый список, а преобразует данный.
Метод count(Объект: , Старт: , Конец: ) - этот метод считывает количество заданного элемента в списке. Объект считается равным элементу, если он полностью идентичен элементу.
Метод reverse(Без параметров) - этот метод полностью переворачивает последовательность элементов в списке(инвертирует его🔀), он не создаёт новый список, а преобразует данный.
Метод count(Объект: , Старт: , Конец: ) - этот метод считывает количество заданного элемента в списке. Объект считается равным элементу, если он полностью идентичен элементу.
🎉6🤔2🤩1👌1
Середина нашей недели списков!(день #4)💻
sort(Явно указанные аргументы: ) - этот метод сортирует список. Он принимает необязательные, явно указанные параметры(reverse, key). Изначально он сортирует список по возрастанию, но с параметром reverse=True, он сортирует список по убыванию. sort() может сортировать строки по алфавитному порядку. Самое интересное в этом методе начинается, когда мы задумываемся, как работает сортировка.
Метод sort() использует алгоритм TimSort.
Метод TimSort разделяет списки на подсписки, сравнивает подсписки сортировкой вставками, а потом сравнивает подсписки сортировкой слиянием.
Алгоритм работы сортировки вставками.
При сортировке вставками, список делится на две части(готовая и неотсортированная часть), в готовой части содержится первый элемент и все последующие, пока какой-то из элементов не будет меньше предыдущего. После того, как нашлась готовая часть, в неотсортированной части каждый элемент(начиная с первого) ищет место в готовой части, чтобы не нарушить последовательность в ней(встать между его меньшим и большим элементом).
На самом деле алгоритмов сортировок достаточно много(есть быстрые и есть медленные).
Вот некоторые из них:
Сортировка пузырьком
Шейкерная сортировка
Сортировка расческой
Сортировка Шелла
Сортировка деревом
Быстрая сортировка
Битонная сортировка
Поразрядная сортировка
Сортировка подсчетом
Блочная сортировка
Пирамидальная сортировка
И это ещё не все...
sort(Явно указанные аргументы: ) - этот метод сортирует список. Он принимает необязательные, явно указанные параметры(reverse, key). Изначально он сортирует список по возрастанию, но с параметром reverse=True, он сортирует список по убыванию. sort() может сортировать строки по алфавитному порядку. Самое интересное в этом методе начинается, когда мы задумываемся, как работает сортировка.
Метод sort() использует алгоритм TimSort.
Метод TimSort разделяет списки на подсписки, сравнивает подсписки сортировкой вставками, а потом сравнивает подсписки сортировкой слиянием.
Алгоритм работы сортировки вставками.
При сортировке вставками, список делится на две части(готовая и неотсортированная часть), в готовой части содержится первый элемент и все последующие, пока какой-то из элементов не будет меньше предыдущего. После того, как нашлась готовая часть, в неотсортированной части каждый элемент(начиная с первого) ищет место в готовой части, чтобы не нарушить последовательность в ней(встать между его меньшим и большим элементом).
На самом деле алгоритмов сортировок достаточно много(есть быстрые и есть медленные).
Вот некоторые из них:
Сортировка пузырьком
Шейкерная сортировка
Сортировка расческой
Сортировка Шелла
Сортировка деревом
Быстрая сортировка
Битонная сортировка
Поразрядная сортировка
Сортировка подсчетом
Блочная сортировка
Пирамидальная сортировка
И это ещё не все...
👍7
5# день недели списков!
Если мы будем обычно выводить список, то он выведется со скобками и запятыми, но как вывести список без этих элементов? Да, можно вывести через цикл for, но вот другой способ!
Распаковка списков
С помощью оператора *, мы можем вывести только элементы списка без дополнительных символов. Мы можем использовать аргументы sep и end вместе с распаковкой. Строки тоже можно распаковывать с помощью этого оператора, так как они похоже хранят символы.
Если мы будем обычно выводить список, то он выведется со скобками и запятыми, но как вывести список без этих элементов? Да, можно вывести через цикл for, но вот другой способ!
Распаковка списков
С помощью оператора *, мы можем вывести только элементы списка без дополнительных символов. Мы можем использовать аргументы sep и end вместе с распаковкой. Строки тоже можно распаковывать с помощью этого оператора, так как они похоже хранят символы.
👍7👏2
Предпоследний день недели списков!!!(день #6)
Иногда нужно собирать список из строки или наоборот, собирать строку из элементов списка. Для этого есть методы строк split() и join().
Метод split() разбивает строку на элементы списка. За сигнал разделения он принимает последовательность пробелов(именно последовательность), хотя он может принимать необязательный параметр, который будет разделителем. Если строку с 2+ пробелами между словами разделить на элементы с помощью метода split() с параметром ' ', список будет содержать несколько элементов с пустыми строками, так как одного пробела не будет хватать на весь отступ, а при использовании без параметра список будет содержать только слова строки, так как он принимает за разделитель последовательность пробелов.
Метод join() создаёт строку, состоящую из элементов списка, находящегося в качестве параметра метода, а за разделитель между словами он принимает строку, к которой применяется метод.
Иногда нужно собирать список из строки или наоборот, собирать строку из элементов списка. Для этого есть методы строк split() и join().
Метод split() разбивает строку на элементы списка. За сигнал разделения он принимает последовательность пробелов(именно последовательность), хотя он может принимать необязательный параметр, который будет разделителем. Если строку с 2+ пробелами между словами разделить на элементы с помощью метода split() с параметром ' ', список будет содержать несколько элементов с пустыми строками, так как одного пробела не будет хватать на весь отступ, а при использовании без параметра список будет содержать только слова строки, так как он принимает за разделитель последовательность пробелов.
Метод join() создаёт строку, состоящую из элементов списка, находящегося в качестве параметра метода, а за разделитель между словами он принимает строку, к которой применяется метод.
👍5😁2
Что выведет код на картинке выше?🤔
Anonymous Quiz
18%
IndexError:
35%
Всё слишком просто
0%
1
6%
0
18%
C#
12%
2
6%
Python
6%
4
0%
-1
0%
Java
🤬5👍3😢2🥴1
Всем привет!👋
Сегодня я достиг отметки в 500 решённых задачек, 50 участий в Clash Of Code и 450 решённых задач на Stepik!!!🥳
Сегодня я достиг отметки в 500 решённых задачек, 50 участий в Clash Of Code и 450 решённых задач на Stepik!!!🥳
👍6🔥6👏1🤡1
Термины при изучении пользовательских функций
Функция - фрагмент кода для решения задач.
Встроенные функции - функции, созданные сразу, заранее(int(), str()...).
Пользовательские функции - функции, которые создаются вручную для решения различных задач(через def)).
Объявление функции - создание функции.
Вызов функции - Использование функции после её объявления.
Параметры - это переменные, которые подаются функции во время её объявление.
Аргументы - любые типы данных, которые подаются функции во время её вызова.
Параметрические переменные - параметры.
Формальные параметры - аргументы.
Фактические параметры - параметры.
Локальные переменные - переменные, созданные в теле функции с областью видимости только в функции, в которой переменная объявлена. Параметрическая переменная - локальная переменная.
Глобальные переменные -переменные, объявленные вне функции с областью видимости всей программы. Говорят, что лучше не использовать глобальные переменные.
Функция - фрагмент кода для решения задач.
Встроенные функции - функции, созданные сразу, заранее(int(), str()...).
Пользовательские функции - функции, которые создаются вручную для решения различных задач(через def)).
Объявление функции - создание функции.
Вызов функции - Использование функции после её объявления.
Параметры - это переменные, которые подаются функции во время её объявление.
Аргументы - любые типы данных, которые подаются функции во время её вызова.
Параметрические переменные - параметры.
Формальные параметры - аргументы.
Фактические параметры - параметры.
Локальные переменные - переменные, созданные в теле функции с областью видимости только в функции, в которой переменная объявлена. Параметрическая переменная - локальная переменная.
Глобальные переменные -переменные, объявленные вне функции с областью видимости всей программы. Говорят, что лучше не использовать глобальные переменные.
👍8
Всем привет! Попробуйте проанализировать код и ответить на опрос ниже. Таблицу ASCII прикрепил.
🤔4👍2😱2
Что выведет программа с кодом выше?🤔⬆️
Anonymous Quiz
10%
False
0%
2
10%
P
0%
y
10%
True
0%
121
15%
3
15%
...Error:...
0%
40
40%
Пустой вывод
👍3🕊2🤨2
Всем привет!❄️ Поздравляю вас с Новым годом!
Желаю побыстрее приобрести всего, чего не хватало в прошлом году! Заниматься любимым делом, здоровья и счастья! Новый год - это лучшее время для начинания чего-то нового и интересного, если начать заниматься чем-то, до чего никак не доходили руки, но очень хотелось, то пора начинать и на следующий год будет большой результат не будет чувства сожаления!
Желаю побыстрее приобрести всего, чего не хватало в прошлом году! Заниматься любимым делом, здоровья и счастья! Новый год - это лучшее время для начинания чего-то нового и интересного, если начать заниматься чем-то, до чего никак не доходили руки, но очень хотелось, то пора начинать и на следующий год будет большой результат не будет чувства сожаления!
👏8🎄2☃1👍1🔥1
Какое число я загадал?
Сколько вопросов с ответом 'больше' или 'меньше' нужно задать, чтобы гарантированно ответить правильно?
Например, возьмём числа от 1 до 200, для ответа нужно найти двоичный логарифм максимального числа в диапазоне, у нас максимальное число - 200. Двоичный логарифм 200 - 8
Простое объяснение
Двоичный логарифм числа - это степень, в которую нужно умножить 2, чтобы получить первое число большее или равное большему в диапазоне.
Как это работает?
Пусть, собеседник загадал число 154, 200 делим на 2, получаем 100, собеседник отвечает 'больше', значит число в диапазоне от 100 до 200(всего 100 чисел), 100 делим на 2, будет 50, 100 + 50 = 150, собеседник отвечает 'больше', значит число находится в диапазоне от 150 до 200(всего 50 чисел), 50 разделить на 2 = 25, 150 + 25 = 175, человек говорит 'меньше', это означает, что число в диапазоне от 150 до 175(всего 25 чисел), 25 делим на 2 = 12(округляя в меньшую сторону), 150 + 12 = 162, человек говорит меньше, значит число в диапазоне от 150 до 162, 12 / 2 = 6, от 150 до 156 6 чисел, слышим 'меньше', 6 / 2 = 3, после числа 153, слышим 'больше', значит загадано 154 или 155, 3/2 = 1(округляя в меньшую сторону), 153 + 1 = 154, 154 оказывается загаданным числом.
Сколько вопросов с ответом 'больше' или 'меньше' нужно задать, чтобы гарантированно ответить правильно?
Например, возьмём числа от 1 до 200, для ответа нужно найти двоичный логарифм максимального числа в диапазоне, у нас максимальное число - 200. Двоичный логарифм 200 - 8
Простое объяснение
Двоичный логарифм числа - это степень, в которую нужно умножить 2, чтобы получить первое число большее или равное большему в диапазоне.
Как это работает?
Пусть, собеседник загадал число 154, 200 делим на 2, получаем 100, собеседник отвечает 'больше', значит число в диапазоне от 100 до 200(всего 100 чисел), 100 делим на 2, будет 50, 100 + 50 = 150, собеседник отвечает 'больше', значит число находится в диапазоне от 150 до 200(всего 50 чисел), 50 разделить на 2 = 25, 150 + 25 = 175, человек говорит 'меньше', это означает, что число в диапазоне от 150 до 175(всего 25 чисел), 25 делим на 2 = 12(округляя в меньшую сторону), 150 + 12 = 162, человек говорит меньше, значит число в диапазоне от 150 до 162, 12 / 2 = 6, от 150 до 156 6 чисел, слышим 'меньше', 6 / 2 = 3, после числа 153, слышим 'больше', значит загадано 154 или 155, 3/2 = 1(округляя в меньшую сторону), 153 + 1 = 154, 154 оказывается загаданным числом.
👍8❤2🤔2
hangman.py
23.1 KB
Всем привет!
Хочу поделиться своим новым проектом, Hangnam(490 строк), выбор языка, выбор сложностей, изображение состояния, 300+ слов на рус и англ в словарях для угадывания, много бонусов и не меньше всего интересного.
Хочу поделиться своим новым проектом, Hangnam(490 строк), выбор языка, выбор сложностей, изображение состояния, 300+ слов на рус и англ в словарях для угадывания, много бонусов и не меньше всего интересного.
👍8👏2🤓1
Про return в функциях
Функции могут возвращать различные значения с помощью return(строки, числа, списки, True, False), причём при возвращении первого значения функция прекращает свою работу, но как вернуть несколько значений. Можно использовать return, который возвращает несколько значений(Пример: return 1, 2, 3, 4), можно возвращать сколько угодно значений, но для каждое возвращаемое значение должно где-то храниться(Пример: num1, num2, num3 = get_numbers().
Функции могут возвращать различные значения с помощью return(строки, числа, списки, True, False), причём при возвращении первого значения функция прекращает свою работу, но как вернуть несколько значений. Можно использовать return, который возвращает несколько значений(Пример: return 1, 2, 3, 4), можно возвращать сколько угодно значений, но для каждое возвращаемое значение должно где-то храниться(Пример: num1, num2, num3 = get_numbers().
👍6🤔3👏2
Модуль random
Данный модуль используется для генерации 'случайных' чисел.
randint() - этот метод возвращает сгенерированное число в заданном диапазоне(включая последнее число). Можно использовать для разных интерактивных программ, например, если программа должна рандомно выбрать оператор для двух операндов(+, -, *, /....)
randrange() - этот метод возвращает сгенерированное число и работает как range(), то есть можно передавать шаг, левую границу и правую границу(которая не будет включена).
choice() этот метод возвращает одно случайное значение из заданного списка.
Данный модуль используется для генерации 'случайных' чисел.
randint() - этот метод возвращает сгенерированное число в заданном диапазоне(включая последнее число). Можно использовать для разных интерактивных программ, например, если программа должна рандомно выбрать оператор для двух операндов(+, -, *, /....)
randrange() - этот метод возвращает сгенерированное число и работает как range(), то есть можно передавать шаг, левую границу и правую границу(которая не будет включена).
choice() этот метод возвращает одно случайное значение из заданного списка.
👍7
Методы модуля random возвращают не случайные
По идее, методы модуля random направлены на возвращение случайных чисел. Да, это действительно так, если не вникаться в подробности. На самом деле, в этом модуле, числа высчитываются по специальной формуле. Но для вычисления числа по формуле, нужно знать начальное значение.
Системное время - это время, которое считается до маленьких единиц времени. Для начального значения, модуль random берёт цифры этого значеия.
По идее, методы модуля random направлены на возвращение случайных чисел. Да, это действительно так, если не вникаться в подробности. На самом деле, в этом модуле, числа высчитываются по специальной формуле. Но для вычисления числа по формуле, нужно знать начальное значение.
Системное время - это время, которое считается до маленьких единиц времени. Для начального значения, модуль random берёт цифры этого значеия.
🔥4👍3🤓2
hangman.py
30.7 KB
Всем привет!
Это файл c улучшенной версией hangman, я вылавливал ошибки и баги в игре и вот описание игры, на самом деле, в проекте я закомментировал описание игры, но оно на англ.
Краткое игры(без описания кода), так как с прикреплённым файлом большое описание не получится.
Это игра hangman('Палач' или 'Виселица'), пользователь может выбрать язык игры(рус или англ) и режим игры(лёгкий, нормальный или сложный), игроку загадывается слово из отдельных кортежей. Слова достаточно интересные, так как я пытался добавлять не все подряд, а интересные. Даётся длина загаданного слова(количество букв) и человек выбирает букву, если выбранная буква есть в слове - открываются все данные буквы в слове, иначе - отнимается попытка, каждую попытку картинка виселицы всё больше прорисовывается.
Присутствует 2 бонуса:
1 Бонус - открывается первая и последняя буква(для лёгкого режима)
2 Бонус - показывается категория данного слова(для лёгкого и нормального режима)
Это файл c улучшенной версией hangman, я вылавливал ошибки и баги в игре и вот описание игры, на самом деле, в проекте я закомментировал описание игры, но оно на англ.
Краткое игры(без описания кода), так как с прикреплённым файлом большое описание не получится.
Это игра hangman('Палач' или 'Виселица'), пользователь может выбрать язык игры(рус или англ) и режим игры(лёгкий, нормальный или сложный), игроку загадывается слово из отдельных кортежей. Слова достаточно интересные, так как я пытался добавлять не все подряд, а интересные. Даётся длина загаданного слова(количество букв) и человек выбирает букву, если выбранная буква есть в слове - открываются все данные буквы в слове, иначе - отнимается попытка, каждую попытку картинка виселицы всё больше прорисовывается.
Присутствует 2 бонуса:
1 Бонус - открывается первая и последняя буква(для лёгкого режима)
2 Бонус - показывается категория данного слова(для лёгкого и нормального режима)
👍5❤1