Свежие публикации

Здесь собраны все публикуемые пикабушниками посты без отбора. Самые интересные попадут в Горячее.

21 Февраля 2024

На Пафосе (или, почему именно Кипр - новая родина сбежавших олигархов)- не политика,жисть

друг мой сочинил.

Предисловие:

Некоторые люди путешествуют по миру, и некоторые из них не могут вернуться домой (по разным причинам), и они вынуждены жить на чужбине и страдать по Родине каждый день.


Эпиграф:

Вставайте Граф, вас ждут великие дела!
.

Глава 1:

В одном баре на Уралмаше… (ну, как в баре, в грязном ларьке с шаурмой ,где можно бухать свое пивко))…Состоялся следующий диалог :-

- я сегодня весь такой на пафосе, я седня с девахой одной встречаюсь...короче стою я сейчас весь такой на пафосе!
- ты не можешь Геннадий , стоять на Пафосе.
- почему Николай ? Я сейчас весь на пафосе (я помыт, побрит, надушен огуречным лосьоном ииии…. красиво одет)? Я считаю, что я сегодня –на пафосе!
- не можешь ты стоять на Пафосе! Так как Пафос - это город в Греции (точнее на Кипре). Понял?
- гонишь ты мне!
- не гоню!
- а давай проверим!??!!
- а давай!

Глава 2:

Показать полностью
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, IT, Длиннопост

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

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

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

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

Время прогревать аудиторию!

Сентябрь — это не только начало учебного года, но и время активной подготовки к горячему сезону распродаж. Самое время подключить подписку Пикабу+:

  • рассказывайте о своих товарах и услугах

  • добавляйте ссылки

  • создавайте витрину товаров прямо в профиле

  • подключайте дополнительное продвижение постов

Пора готовить сани!

ПОДКЛЮЧИТЬ ПИКАБУ+

Мои подписки
Подписывайтесь на интересные вам теги, сообщества, авторов, волны постов — и читайте свои любимые темы в этой ленте.
Чтобы добавить подписку, нужно авторизоваться.

Отличная работа, все прочитано! Выберите