Программирование тесно переплетено с математикой, и как бы этого не хотелось делать некоторым, вспоминать математику, если она забыта, придется.
Понятие простых чисел так же изучается в школьном курсе математики, и напомнить его считаю не лишним.
Если говорить "человеческим" языком, простым называют то натуральное число, которое без остатка делится только на единицу и само на себя.
Чисел таких довольно много:
2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31...
И это только начало!
Изображение 0fjd125gk87 с сайта Pixabay
Давайте построим алгоритм на языке программирования Python, который будет определять является ли число, введенное пользователем, простым.
Сделать это довольно просто:
Изображение автора
Действительно, мы запрашиваем у пользователя число, которое необходимо проверить, инициализируем переменную, куда будем "складывать" все имеющиеся делители.
Делители ищем в цикле, который будет перебирать числа от 1 (на ноль делить нельзя) до самого числа, введенного пользователем.
Если число делителей будет равно 2, то выводим сообщение о том, что число простое. В остальных же случаях число составное.
Все согласно определению простого числа.
Но давайте подумаем, получится ли у нас оптимизировать процесс проверки?
Да, это можно сделать гораздо проще.
Изображение автора
Во-первых, проверять деление числа на 1, как и деление числа на само себя, смысла не имеет, так как все натуральные числа делятся и на 1 и на само себя без остатка.
Более того, минимальный результат деления без остатка, который мы можем найти в принципе, это 2, поэтому мы смело можем сократить диапазон поиска делителей вдвое, не забыв прибавить к этому выражению единицу, так как функция range() не использует последнее число диапазона в скобках.
К тому же, как только мы находим единственный делитель, кроме 1 и самого числа, мы можем с чистой совестью прервать цикл и сделать вывод, что число составное.
И только если число простое, цикл совершит user_num / 2 итераций, что значительно повышает производительность изначального кода с первого изображения.
(Изображение для мобильной версии Ralph Nas с сайта Pixabay)
Мы используем cookie-файлы, чтобы улучшить сервисы для вас. Если ваш возраст менее 13 лет, настроить cookie-файлы должен ваш законный представитель. Больше информации
Конвертор времени на Python. Задача с решением и пояснениями
Есть несомненная польза от решения абстрактных задач. Но всегда интереснее делать что-то, пусть не сложное, но такое что действительно может пригодиться в реальной жизни.
Хотя бы в теории.
Начну данный пост с практического примера, на котором будет проще объяснить основную мысль данного материала.
Давайте попробуем решить такую задачу:
Человек пошел за грибами.
Программа запрашивает у пользователя количество собранных грибов, и если грибы продолжают попадаться, то есть их количество не равно 0, то сбор грибов продолжается.
Если в какой-то момент пользователь закончил сбор дикоросов и вводит количество грибов равное 0, то программа выводит сообщение о завершении мероприятия и завершает свою работу.
Циклы в решении использовать нельзя.
Изучая типы данных в языке программирования Python, можно заметить, что даже числа порой удобнее обрабатывать в коде, преобразовав их в стоковый тип.
Это позволяет гибче смотреть на тип каждой переменной и шире использовать возможности языка.
В предыдущих постах этого блога мы уже касались темы объявления функций. Так же упоминалось, что в функции может быть не одна, а несколько переменных.
Ниже рассмотрим нюансы и ошибки, которые могут возникнуть при использовании такого инструмента.
Как мы обычно это делаем, разберем все на примере.
Сегодня будет представлена практическая часть материала, которая поможет начать лучше ориентироваться в применении функций с переданным в них единственным аргументом.
Рассмотрим и решим задачи где такая возможность языка программирования Python может быть использована.
Задача 1
Необходимо написать программу, которая будет запрашивать имя пользователя, и выводить на экран приветствие.
Вывод нужно реализовать в отдельной функции, а основной код поместить в "бесконечный" цикл с возможностью выхода из него при вводе "0".
В предыдущем посте мы уже открыли для себя возможность самостоятельного объявления функций, а сегодня немного расширим познания в этой сфере.
Как мы можем видеть на примере встроенных функций Python, внутри функций зачастую передается тот или иной аргумент.
К примеру, если нам нужно преобразовать число с плавающей точкой 5.0 в целочисленное значение, то мы просто передаем его в виде аргумента в функцию int() и получаем на выходе нужный нам результат.
А чтобы вывести на экран это число, мы передаем его в качестве аргумента во встроенную функцию print():
Для чего писать функции в языке программирования Python
В языке программирования Python есть встроенные функции, которые уже рассматривались в других постах блога.
Но есть ситуации, а главное, возможность, писать функции самостоятельно.
Ниже рассмотрим ситуации, когда целесообразно создавать собственные функции и напишем одну для понимания принципа их работы в структуре программного кода.
Программирование тесно переплетено с математикой, и как бы этого не хотелось делать некоторым, вспоминать математику, если она забыта, придется.
Понятие простых чисел так же изучается в школьном курсе математики, и напомнить его считаю не лишним.
Если говорить "человеческим" языком, простым называют то натуральное число, которое без остатка делится только на единицу и само на себя.
Чисел таких довольно много:
Функция round() для округления чисел с плавающей точкой. Python
Безусловно, все математики и другие ученые вздохнули бы с облегчением, если бы вдруг стало возможным в своих вычислениях использовать только целые числа.
Но реальность такова, что строго говоря происходит наоборот. Целые числа встречаются лишь в математических моделях, а в природе наоборот, их днем с огнем не сыскать.
Поэтому ученые, как действительно объективные люди, не стали игнорировать реальность, и широко используют дробные числа, и информатика с программированием не могла стать исключением.
Цикл for: нахождение максимального числа в списке. Python
Сразу сделаю оговорку, что данный метод не является самым эффективным и лаконичным, а используется больше для изучения циклов и улучшения понимания алгоритмов их работы.
Тем не менее в этой ипостаси данная задача весьма привлекательна, имеет интересное решение и не скучна даже для решения опытными разработчиками.
Задача на вложенные циклы с решением и его разбором. Python для начинающих
Циклы – один из важнейших инструментов разработчика. Поэтому понимание алгоритма их работы – это важное звено в цепочке знаний, которое ни в коем случае не должно быть слабым.
Поэтому практически во всех обучающих материалах по программированию большое внимание уделяется решению даже простых задач с применением циклов.
Сегодня займемся решением типовых задач, которые не столько сложны, сколько помогают понять механизм работы циклов.
Ну и конечно, задачи эти для начинающих разработчиков и решаются соответствующими методами.
Методы списков append() и extend() в Python. Применение
Коллекции типа list являются изменяемыми. Соответственно у нас есть возможность как добавить в список элементы, так и изменить, а то и вовсе удалить их.
Методы списков append() и extend() в Python используются для добавления элементов в конец списка.
Но если они делают одно действие, зачем нужны два метода?
О различии в их работе мы сегодня и поговорим.
Простым и эффективным способом генерации списков с заданными заранее условиями в Python являются циклы for, в теле которых прописывается код, генерирующий элемент списка и последовательно, при каждой итерации, добавляющий его в коллекцию.
3 задачи с подвохом на Python с решением и комментариями
Иногда очевидные вещи не настолько очевидные, как могут показаться на первый взгляд.
И если результат работы кода из нескольких тысяч строк оценить беглым взглядом сложно, то когда перед глазами 3-5 строчек, кажется, что точно знаешь ответ и подвоху спрятаться негде.
Вложенные циклы в Python. Применение при решении задач
В предыдущих постах уже много раз была затронута тема использования циклов в программировании.
Это и понятно, циклы – это крайне удобный и широко применяемый инструмент при написании кода и решении поставленных перед разработчиком задач.
Калькулятор за 5 минут на языке программирования Python
Писать абстрактный код – это, безусловно, здорово. Но всегда интереснее то, что можно применить на практике.
Это как сделать своими руками инструмент. Пусть он будет не так красив, удобен и функционален, как аналог, купленный в магазине.
Но его использование доставляет особое удовольствие.
Методы строк lower() и upper() в языке программирования Python
Продолжаем знакомиться с методами, которые применимы к коллекциям типа str языка программирования Python.
Сегодня разберем два парных метода, которые имеют одинаковый принцип действия, но используются для достижения противоположных результатов.
Циклы в Python: задачи с решением и разбором для начинающих. Язык программирования Python
Как бы не было сильно рвение к новым знаниям и освоению новых возможностей, практика – это то, без чего полученная информация будет бесполезной.
Разберем ряд задач, которые решаются при помощи циклов.
Задача 1
Условие:
Дан некий список из произвольных чисел ([5, -6, 1, -12, 2, -41, 19]).
Получить новый список, в который должны войти каждое число из первого списка, при условии, что оно по модулю больше 6.
Аргументы start, stop и step функции range() в языке программирования Python
Встроенная функция range() языка программирования Python может иметь до трех аргументов, один из которых, а именно stop, является обязательным.
В общем виде синтаксис выглядит так:
Нет комментариев