Page.notfound

Page.notfound

Админ канала https://t.me/python_scrypt
Пикабушник
606 рейтинг 30 подписчиков 15 подписок 31 пост 4 в горячем
8

Подробно разбираем вопросы с собесов на Junior Python Developer

Какие есть типы данных в Python ?

Типы данных делят на 2 группы: изменяемые и не изменяемые.

Изменяемые (mutable)

Списки (list): Упорядоченные коллекции, которые могут содержать элементы разных типов. Пример: [1, "apple", 3.14]. Списки часто используются для хранения и последовательного доступа к элементам

e = [1, 2, 3, 4, 5]

Словари (dict): Коллекции пар ключ-значение. Пример: {"name": "Alice", "age": 25}. Словари удобны для представления объектов с атрибутами. Ключом в словаре может быть значение с не изменяемым типом данных (int, float, str, tuple, bool, frozenset и т.д.)

g = {"name": "Alice", "age": 25}

Множества (set): Неупорядоченные коллекции уникальных элементов. Пример: {1, 2, 3}. Используются для удаления дубликатов и выполнения операций над множествами, таких как объединение, пересечение.

h = {1, 2, 3, 4, 5}

Байтовые массивы (bytearray): Это изменяемая последовательность целых чисел в диапазоне от 0 до 255. Они используются для работы с двоичными данными, например, при чтении файлов или сетевого взаимодействия. bytearray полезен, когда вам нужно изменять данные на уровне байтов.

ba = bytearray([50, 100, 150, 200])

Не изменяемые (immutable)

Целые числа (int): Как положительные, так и отрицательные. Например, 1, 100, -20.

a = 5

Вещественные числа (float): Числа с плавающей точкой (то есть с дробной частью). Примеры: 3.14, -0.001

b = 2.5

Комплексные числа (complex): Этот тип данных используется для представления комплексных чисел, которые включают в себя действительную и мнимую части. В Python комплексные числа могут быть созданы с помощью литерала j для мнимой части. Например, комплексное число 3 + 4j. Комплексные числа используются в научных и инженерных расчетах, где необходимо работать с числами, имеющими мнимую составляющую.

z = 3 + 4j

Длинные целые числа (long): В старых версиях Python (2.x и ранее) существовал отдельный тип данных long для представления очень больших целых чисел. Однако в Python 3 и выше этот тип был упразднен, и теперь все целые числа (int) могут быть любой длины. Таким образом, в современном Python отдельного типа данных long не существует — все большие целые числа автоматически становятся int.

a = 12345678901234567890L # Python 2.x

a = 12345678901234567890 # Python 3

Строки (str): Текст, заключенный в одинарные, двойные или тройные кавычки. Например: "hello", 'world'.

c = "Hello, Python!"

Булевы значения (bool): Имеют всего два значения: True и False. Они часто используются в условиях и логических выражениях.

d = True

Кортежи (tuple): Похожи на списки, но являются неизменяемыми. Пример: (1, "apple", 3.14). Используются, когда данные не должны изменяться после их создания. Если кортеж содержит изменяемые данные, то он становится изменяемым

f = (1, 2, 3)

Диапазон (range): Это неизменяемая последовательность чисел, обычно используемая в циклах for. range полезен для итерации через серии числовых значений.

for i in range(0, 10):

> > print(i)

NoneType: Этот тип данных имеет только одно возможное значение: None. Оно используется для обозначения отсутствия значения. Часто используется в логических операциях например if a is None:

a = None

Frozenset: Это неизменяемый аналог set. Так как frozenset неизменяем, он может использоваться в качестве ключа в словарях.

fs = frozenset([1, 2, 3])

Байты (bytes): Похожи на bytearray, но являются неизменяемыми. Они также представляют собой последовательности целых чисел от 0 до 255 и используются для работы с двоичными данными.

b = bytes([50, 100, 150, 200])

Мой канал по python: https://t.me/python_scrypt (полезная инфа, обзор библиотек)

Если статья информативная то прошу поддержать плюсом) всем спасибо за просмотр!)

Показать полностью

9 стандартных библиотек Python

OS - работа с системой

math - математические операторы

time - системное время (UNIX)

datatime - дата и время

random - генератор случайных чисел

smtplib - работа с smtp

tkinter - графический интерфейс

sqlite3 - база данных

csv - формат данных разделенных запятыми

9 стандартных библиотек Python

Источник: https://t.me/python_scrypt (все о программировании на python)

Показать полностью 1
3

Задания для подготовки к собесу. Разбираем реализацию алгоритма двоичного поиска на Python, повторяем циклы и списки

Всем привет) на тему двоичного поиска написано множество статей и гайдов, но в этой статье постараюсь подойти к задаче с позиции новичка и расписать максимально просто процесс решения этой задачи на языке программирования Python.

Инструкция к статье: Пожалуйста, если вы программист из Google, Билл Гейтс или Илон Маск, а также страдаете мегаломанией просьба не читать статью, в первых трех случаях она не принесет вам ничего нового, а в четвертом случае это не совсем удачный способ повышения ЧСВ)). Рассматриваются базовые конструкции, приведенный код тут не является "истиной в последней инстанции" как говорится Cujusvis hominis est errare. Поэтому если есть вариант решения пишите в комментарии! Буду рад комментариям от более опытных программистов, обычно их плюсую, спасибо Вам!)) закончим второй частью высказывания - nullius nisi insipientis in errore perseverare.

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

Двоичный поиск позволяет повысить производительность кода по сравнению с линейным кодом так как каждый элемент не перебирается а перебираются части списка где бы мог бы быть элемент. Стоит добавить что алгоритм подходит для отсортированного массива данных.

Какие знания используются для решения?

В процессе решения этой задачи применим знания в области циклов и списков.

(Небольшое отступление: https://t.me/python_scrypt - телеграмм канал по Python, задачи и вопросы с собесов а также обзор популярных библиотек и куча полезной инфы)

Приступим к решению задачи, договоримся что отступы в коде буду обозначать как " > > "

Будем разбирать на примере списка чисел от 1 до 10. Давайте попросим пользователя ввести массив чисел:

listx = list(map(int, input().split())) # ввод списка чисел списка чисел 1 2 3 4 5 6 7 8 9 10

Этот код принимает строку символов, которую вводит пользователь, разделяет ее на отдельные числа с помощью метода split(), и затем с помощью map () применяет функцию int() к каждому элементу, чтобы преобразовать его в соответствующее целое число. После этого все эти числа помещаются в список listx.

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

listx = list(map(int, input().split())) # ввод списка чисел списка чисел 1 2 3 4 5 6 7 8 9 10

listx.sort() # выполняем сортировку

Далее, создаем копию списка (списки - изменяемый объект) и попросим пользователя ввести элемент который будем искать в списке.

listx = list(map(int, input().split())) # ввод списка чисел списка чисел 1 2 3 4 5 6 7 8 9 10

listx.sort() # выполняем сортировку

list = listx # создаем копию списка
b = int(input("Элемент: ")) # просим пользователя ввести значение для поиска

Дальше запускаем цикл, который будет выполняться пока значение длины списка больше либо равно 1

listx = list(map(int, input().split())) # ввод списка чисел списка чисел 1 2 3 4 5 6 7 8 9 10

listx.sort() # выполняем сортировку

list = listx # создаем копию списка
b = int(input("Элемент: ")) # просим пользователя ввести значение для поиска

while len(list)>=1: # len - получение длины списка list

В теле цикла пропишем 3 условия:

listx = list(map(int, input().split())) # ввод списка чисел списка чисел 1 2 3 4 5 6 7 8 9 10

listx.sort() # выполняем сортировку

list = listx # создаем копию списка
b = int(input("Элемент: ")) # просим пользователя ввести значение для поиска

while len(list)>=1: # len - получение длины списка list
> > if b == list[(len(list)//2)]:
> > > > print("Найдено:", list[len(list) // 2], "индекс:", listx.index(list[len(list) // 2])) # если найден
> > > > > >break # прекращение работы цикла
> > elif b < list[(len(list)//2)]: # делим список на 2 части
> > > > >list = list[:(len(list)//2)] # рассматриваем левую часть
> > else:
> > > >list = list[(len(list)//2):len(list)] # рассматриваем правую часть

Цикл находит медиану элемента в списке list. Он делает это путем разделения списка на две части, сравнивая элемент b с элементом в середине списка (если список имеет четное количество элементов, он использует среднее значение двух средних элементов). Затем он рекурсивно вызывает себя, если элемент меньше найденной медианы, он обрабатывает только первую половину списка, иначе он обрабатывает вторую половину списка. В конце он выводит медиану и ее индекс в списке.

Теперь представим что значения которое ввел пользователь нет в списке, выведем об этом сообщение. Это можно реализовать путем добавления конструкции else после выполнения цикла (если ни одно из условий в цикле не выполняется то срабатывает конструкция else).

listx = list(map(int, input().split())) # ввод списка чисел списка чисел 1 2 3 4 5 6 7 8 9 10

listx.sort() # выполняем сортировку

list = listx # создаем копию списка
b = int(input("Элемент: ")) # просим пользователя ввести значение для поиска

while len(list)>=1: # len - получение длины списка list
> > if b == list[(len(list)//2)]:
> > > > print("Найдено:", list[len(list) // 2], "индекс:", listx.index(list[len(list) // 2])) # если найден
> > > > > >break # прекращение работы цикла
> > elif b < list[(len(list)//2)]: # делим список на 2 части
> > > > >list = list[:(len(list)//2)] # рассматриваем левую часть
> > else:
> > > >list = list[(len(list)//2):len(list)] # рассматриваем правую часть
else:

> > print("Не найдено") # сработает если в цикле не найдено ни одного значения

Все! готово! ниже прикреплю картинку кода.

Задания для подготовки к собесу. Разбираем реализацию алгоритма двоичного поиска на Python, повторяем циклы и списки

Также можете посмотреть код в онлайн интерпретаторе - тык

Мой канал по python: https://t.me/python_scrypt (полезная инфа, обзор библиотек)

Если статья информативная то прошу поддержать плюсом) всем спасибо за просмотр!)

Показать полностью 1
8

Готовимся к собеседованию решая задачи по Python, Разбираем вложенные циклы, списки и функции

Всем привет:) Продолжаю разбирать задачи с собеседований, небольшие по объему но в то же время позволяющие повторить некоторые разделы. Это будет полезно как для начинающих так и для опытных программистов как повторение и возможность похвастаться более красивым кодом) Скажу сразу что не претендую на "идеальный код" так пытаюсь максимально сделать свой код понятным и чтобы мне было легко его расписывать. Возможно оно и лучше:) так как у более опытных программистов тут будет возможность поправить меня, опубликовать свою версию кода и получить плюсы:) а новичкам возможность посмотреть на различные решения одной и той же задачи. Если статья вам понравится можете поддержать меня и поставить плюс:) также пишите ваши вопросы и предложения в комментарии, постараюсь всем ответить. Посмотрим условие задачи:)

Напишите программу, которая выведет первые N простых чисел

Комментарий если прогуливали уроки математики: Простое число - число которое делится само на себя и на единицу (имеет 2 общих делителя).

Какие знания для решения требует эта задача? Ответ: Понимание как устроены вложенные циклы и умение работать со списками.

Приступим к решению задачи, как и в прошлой статье разберем варианты решения как с функцией так и без функции.

Без функции

Так как конечное число не указано то запросим у пользователя ввод числа до которого будем выводить простые числа. Удобный пользовательский интерфейс так сказать:)

n = int(input("Введите n: ")) # "int" преобразует введенное пользователем значение в число

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

n = int(input("Введите n: ")) # "int" преобразует введенное пользователем значение в число

numbers = [] # список, в который будем вносить простые числа

Все:) данные получили, списки создали, теперь начнем искать числа:)

Для этого создадим цикл for от 2 до (n + 1), в нем будем перебирать все делители. Заметим что единица не является простым числом

Почему до (n +1)?

ответ: ошибка на единицу:) более подробно написано тут

n = int(input("Введите n: ")) # "int" преобразует введенное пользователем значение в число

numbers = [] # список, в который будем вносить простые числа

for i in range(2, n+1): # заводим цикл от 2 до (n + 1)

Договоримся что все отступы в коде буду обозначать как " > > "

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

n = int(input("Введите n: ")) # "int" преобразует введенное пользователем значение в число

numbers = [] # список, в который будем вносить простые числа

for i in range(2, n+1): # заводим цикл от 2 до (n + 1)

> > for j in range(2, i): # переменная цикла j - проверяемое число на наличие делителей

Итак, главный залог успеха в решении любой задачи: умение представить алгоритм решения. Как мы поймем что число i делится на число j? Ответ как всегда на поверхности: остаток от числа должен быть равен нулю. В Python есть оператор % который позволяет найти остаток от деления. Применим в нашем коде этот оператор.

n = int(input("Введите n: ")) # "int" преобразует введенное пользователем значение в число

numbers = [] # список, в который будем вносить простые числа

for i in range(2, n+1): # заводим цикл от 2 до (n + 1)

> > for j in range(2, i): # переменная цикла j - проверяемое число на наличие делителей

> > > > if (i % j) == 0 # условие проверки деления без остатка

Далее, если условие выполняется то пропускаем это число командой break, также для первого цикла применим оператор Else который означает что мы нашли простое число.

numbers.append(i) - команда добавления числа в наш ранее созданный пустой список.

n = int(input("Введите n: ")) # "int" преобразует введенное пользователем значение в число

numbers = [] # список, в который будем вносить простые числа

for i in range(2, n+1): # заводим цикл от 2 до (n + 1)

> > for j in range(2, i): # переменная цикла j - проверяемое число на наличие делителей

> > > > if (i % j) == 0: # условие проверки деления без остатка

> > > > > > break

> > else:

> > > > numbers.append(i) #добавляем простое число в список

Все! задача практически решена, осталось вывести список на печать! Не забудем применить * для распаковки списка. (уберет квадратные скобки)

n = int(input("Введите n: ")) # "int" преобразует введенное пользователем значение в число

numbers = [] # список, в который будем вносить простые числа

for i in range(2, n+1): # заводим цикл от 2 до (n + 1)

> > for j in range(2, i): # переменная цикла j - проверяемое число на наличие делителей

> > > > if (i % j) == 0: # условие проверки деления без остатка

> > > > > > break

> > else:

> > > > numbers.append(i) #добавляем простое число в список

print(*numbers) # печатаем распакованный с помощью команды "*" список

Рассмотрим эту же задачу с упаковкой кода в функцию

Первоначально необходимо объявить функцию (для новичков: сначала пишем функцию а потом делаем к ней запрос иначе - NameError)

def simple(num): # определяем функцию simple

Наша функция будет принимать число num и возвращать True если num является простым числом, и False в противном случае.

Далее код остается без изменений

def simple(num): # определяем функцию simple

> > for i in range(2, num): # цикл for для перебора всех чисел от 2 до num

> > > > if num % i == 0: # условие проверки деления без остатка

> > > > > > return False # Если num делится на какое-либо из этих чисел без остатка

> > > >return True # в противном случае

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

def simple(num): # определяем функцию simple

> > for i in range(2, num): # цикл for для перебора всех чисел от 2 до num

> > > > if num % i == 0: # условие проверки деления без остатка

> > > > > > return False # Если num делится на какое-либо из этих чисел без остатка

> > > >return True # в противном случае

simple_numbers = []

Прописываем первоначальное значение проверяемых цифр index = 1 (дабы исключить единицу) и запускаем цикл.

def simple(num): # определяем функцию simple

> > for i in range(2, num): # цикл for для перебора всех чисел от 2 до num

> > > > if num % i == 0: # условие проверки деления без остатка

> > > > > > return False # Если num делится на какое-либо из этих чисел без остатка

> > > >return True # в противном случае

simple_numbers = []

index = 1 # первоначальное значение проверяемого числа
for i in range (1, n): #запускаем цикл

> > index += 1 # стартовая цифра 2

Далее проверяем является ли число простым используя функцию simple (как мы помним возвращает True или False) Если значение True то выполняется условие if если False то игнорируем.

def simple(num): # определяем функцию simple

> > for i in range(2, num): # цикл for для перебора всех чисел от 2 до num

> > > > if num % i == 0: # условие проверки деления без остатка

> > > > > > return False # Если num делится на какое-либо из этих чисел без остатка

> > > >return True # в противном случае

simple_numbers = []

index = 1 # первоначальное значение проверяемого числа
for i in range (1, n): #запускаем цикл

> > index += 1 # стартовая цифра 2

> > if simple(index): # прописываем условие

> > > > simple_numbers.append(index) # если удовлетворяет то добавляем в список

Все выполнено! Осталось только вывести распакованный список на печать.

def simple(num): # определяем функцию simple

> > for i in range(2, num): # цикл for для перебора всех чисел от 2 до num

> > > > if num % i == 0: # условие проверки деления без остатка

> > > > > > return False # Если num делится на какое-либо из этих чисел без остатка

> > > >return True # в противном случае

simple_numbers = []

index = 1 # первоначальное значение проверяемого числа
for i in range (1, n): #запускаем цикл

> > index += 1 # стартовая цифра 2

> > if simple(index): # прописываем условие

> > > > simple_numbers.append(index) # если удовлетворяет то добавляем в список

print(*simple_numbers) # распаковываем список и выводим на печать

Ниже для наглядности прикреплю картинку с готовым кодом:

Готовимся к собеседованию решая задачи по Python, Разбираем вложенные циклы, списки и функции

Также можете посмотреть код в онлайн интерпретаторе - тык

Мой канал по python: https://t.me/python_scrypt (полезная инфа, обзор библиотек)

Если статья информативная то прошу поддержать плюсом) всем спасибо за просмотр!)

Показать полностью 1
25

Разбираем задачу для подготовки к собеседованию по Python

Всем привет) согласно данным моего опроса больше всего проголосовало за разбор кода скриптов. Долго думал какие скрипты разбирать, так как уровень знания языка у всех тут довольно разный. Предлагаю разбирать задачи с собеседований, небольшие по объему но в то же время позволяющие повторить некоторые разделы. К тому же вы всегда можете решить задачу по своему и выложить свое решение в комментариях. Это будет полезно как для начинающих так и для опытных программистов как повторение и возможность похвастаться более красивым кодом) Итак начнем.

Напишите программу, которая проверяет, является ли число числом Армстронга. Число Армстронга — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр. Пример: 3**3 + 7**3 + 1**3 = 371

Что проверяют в этой задаче?

Решение покажет ваше умение работать с циклами

Приступим к решению. Задачу можно решить как в виде функции так и без функции (оба решения являются верными, но предпочтительнее все таки обернуть код в функцию) Рассмотрим 2 вида решений

Без функции

Первым делом запросим у пользователя число которое будем проверять. Для этого создадим переменную "num", присвоим ей тип данных (int)

num = int(input("Введите число: ")) # в переменную передаем введенное значение

Далее так как нам нужно будет работать с циклом создаем переменную счетчик "sum" в этой переменной при итерациях цикла будем считать сумму цифр

num = int(input("Введите число: ")) # в переменную передаем введенное значение
sum = 0 # вводим переменную счетчик

Идем дальше. Теперь нам нужно проанализировать количество цифр в числе. Это можно сделать с помощью команды len(), но так как тип данных num у нас числовой (int) то нам нужно конвертировать его в текстовый (str).

num = int(input("Введите число: ")) # в переменную передаем введенное значение
sum = 0 # вводим переменную счетчик

length = len(str(num)) # вычисляем количество цифр в числе, эта же переменная у нас как степень

Запускаем цикл от 0 до значения length. При каждой итерации цикла складываем каждое полученное число с предыдущим, так как форматирование сбивается то отступы обозначил "> >"

num = int(input("Введите число: ")) # в переменную передаем введенное значение
sum = 0 # вводим переменную счетчик

length = len(str(num)) # вычисляем количество цифр в числе, эта же переменная у нас как степень

for digit in list(str(num)): # запускаем цикл

> > sum += int(digit) ** length # количество итераций равно переменной length

Далее после всех итераций получим искомое значение, которое нужно сравнить с тем которое ввел пользователь.

num = int(input("Введите число: ")) # в переменную передаем введенное значение
sum = 0 # вводим переменную счетчик

length = len(str(num)) # вычисляем количество цифр в числе, эта же переменная у нас как степень

for digit in list(str(num)): # запускаем цикл

> > sum += int(digit) ** length # количество итераций равно переменной length

if sum == num: # сравниваем значения

> > print(True) # если совпадают

else:
> > print(False) # если разные

Все задачу без применения функции решили, теперь разберем с функцией.

Решаем с функцией

Первоначально необходимо объявить функцию (для новичков: сначала пишем функцию а потом делаем к ней запрос иначе - NameError)

def armstrong_number(num): # создаем функцию под названием armstrong_number

Далее все стандартно, в функции код без изменений

def armstrong_number(num): # создаем функцию под названием armstrong_number

> > sum = 0 # sum - счетчик суммы, первоначальное значение присваиваем 0

> > length = len(str(num)) # вычисляем количество цифр в числе

> > for digit in list(str(num)): # запускаем цикл

> > > > sum += int(digit) ** length # складываем значения

Теперь возвращаем значение из функции с помощью команды return

def armstrong_number(num): # создаем функцию под названием armstrong_number

> > sum = 0 # sum - счетчик суммы, первоначальное значение присваиваем 0

> > length = len(str(num)) # вычисляем количество цифр в числе

> > for digit in list(str(num)): # запускаем цикл

> > > > sum += int(digit) ** length # складываем значения

> > return sum == num # возвращаем значение sum полученное после выполнения цикла.

Тут также присутствует логическое условие программа выведет True ели выполнится sum == num, в противном случае результат будет False

Все задача решена!

Ниже для наглядности прикреплю картинку с готовым кодом:

Разбираем задачу для подготовки к собеседованию по Python

Также можете посмотреть код в онлайн интерпретаторе - тык

Мой канал по python: https://t.me/python_scrypt

Если статья информативная то прошу поддержать плюсом) всем спасибо за просмотр!)

Показать полностью 1

Опрос: Какие посты по теме программирования на Python вам интересны?

Какие посты по теме программирования на Python вам интересны?
Всего голосов:
6

Получаем валюту, язык и код страны используя библиотеку countryinfo на Python

Всем привет) сегодня хочу рассказать про библиотеку countryinfo которая предназначена для получения информации о странах и регионах. Она позволяет получить данные о флагах, столицах, валютах, языках и других характеристиках стран. Будет полезна для персонализации данных ваших пользователей.

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

Тут на помощь придет библиотека countryinfo, давайте установим ее. Для установки выполните в командной строке:

pip install countryinfo

или если у вас не установлен pip то введите следующие команды:

git clone https://github.com/porimol/countryinfo.git

cd countryinfo

python setup.py install

После успешной установки программы создадим новый файл и импортируем библиотеку

from countryinfo import CountryInfo # импорт библиотеки

Дальше запрашиваем у пользователя ввод его страны. Затем, на основе введенной пользователем страны, создается объект CountryInfo, который содержит информацию об этой стране.

country = input('Введите страну: ') # указываем в переменной country страну
country = CountryInfo(country) # создаем объект

Теперь мы можем получить все данные, давайте с помощью команд: country.currencies() , country.languages(), country.iso() получим код валюты страны, официальный язык, и код ISO (вернет iso значение в двух форматах alpha2 и alpha3)

print("Официальный язык: ", *country.languages())
print("Тикер валюты: ", *country.currencies())
print("Код ISO: ", country.iso())

Далее запускаем код, вводим название страны на английском и смотрим результаты:

В данном примере получили данные для Алжира. Код готов!

В данном примере получили данные для Алжира. Код готов!

Также стоит дополнить что это лишь малая часть данных которую мы можем вывести о стране, можно получать код телефона и другую информацию.

Подробная инструкция по работе с библиотекой: Github

Приглашаю подписаться на мой канал по программированию на python: https://t.me/python_scrypt там вы найдете полезные материалы, обзор библиотек и многое другое!

Показать полностью 1
Отличная работа, все прочитано!