Сообщество - Программирование на python
Добавить пост

Программирование на python

591 пост 11 523 подписчика

Популярные теги в сообществе:

Готовимся к собеседованию решая задачи по 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, IT, Длиннопост

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

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

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

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

Разбираем задачу для подготовки к собеседованию по 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, IT, Длиннопост

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

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

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

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

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

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

Мы в Матрице 01

К вопросу о том, почему наш мир состоит из единиц и нолей.

01

Машинный код — это язык, который состоит из 1 и 0.

Способ определения пола у голубей - YouTube

Получаем валюту, язык и код страны используя библиотеку 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())

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

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

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

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

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

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

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

Курс Python-программист 07. Основы ООП часть 2

Продолжение урока по ОПП, как и обещал в первом ролике. через пару дней запущу стрим, где можно будет обсудить тему объектов и классов и всё что с этим связанно!

Анонс будет у меня на канале в Ютубе и моей группе в ТГ с несмешными картинками и всякими скучными новостями)
https://t.me/davaite_pro_it

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

Продолжение поста «Вышла моя книга для детей по программированию на Python»

Продолжение поста «Вышла моя книга для детей по программированию на Python» Python, Обучение, Дети, Программирование, Развитие детей, Образование, Сила Пикабу, Ответ на пост
Показать полностью 1

Вышла моя книга для детей по программированию на Python

"Здраствуйте. Я, Кирилл. Хотел бы, чтобы вы написали книгу, по Пайтону для детей, но чтобы компьютер был не нужен. Суть такова... Пользователь может просканировать QR-код примера из книги телефоном. И если пользователь просканировал, то на телефоне открывается код и его можно запустить... Если в примере была игра про корованы, то их можно грабить... Можно сохранить код и поделиться с корешами... Если код про космические приключения, то типа сам в космос летишь... Код можно тюнинговать, свои фишки добавлять... А чтобы проектов было много (имена им не придумал)... А движок можно поставить так что всего две кнопки было бы: запустить и сохранить... Если умный такой, то чтобы код поправил такой и новый запустил... Ну а если за злого... то значит нагибаешь QR-код телефоном и ответ видишь. Всего в книге 3 раздела. Т.е. бумага и на ней есть 3 раздела, 1 – введение в Пайтон (нейтрал, вот вообще с нуля), 2- зона продвинутых игр (где кодишь стрелялки и бегалки), 3-зона эльфов (шоб на компе все же можно было запустить тоже, эльфам)... (на ноуте, там есть старый Пайтон...)

P.S. Я джва года хочу такую книгу."

Вышла моя книга для детей по программированию на Python Python, Обучение, Дети, Программирование, Развитие детей, Образование

Да, я и вправду написал такую книжку, только вышла

P.S. Читаю Пикабу лет 10, наверное. Это мой первый пост. 🤞

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