Вычисления
Вы считаете, что арифметические операции — это просто? Пересчитайте. На самом деле, всё не так страшно, но расслабляться не стоит. Начнём со всем знакомой четверки:
print ( 10 + 10 )
# 10
print ( 10 — 5 )
# 5
print ( 11 * 7 )
# 77
print ( 10 / 2 )
# 5.0
Никаких неожиданностей, правда? Не совсем, посмотрите внимательно на операцию деления. Заметили? Мы разделили целое число на его делитель, но несмотря на это, результат имеет тип float. Взглянем на операцию деления чуть более пристально:
print ( 10 / 2 )
# 5.0
print ( 100 / 3 )
# 33.333333333333336
print ( 21 / 4 )
# 5.25
print ( 23 / 7 )
# 3.2857142857142856
Иногда можно увидеть такие приколы:
print ( 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 )
# 0.7999999999999999
print ( 0.1 + 0.2 )
# 0.30000000000000004
print ( 7 / 3 )
# 2.3333333333333335
Еще немного математики. Математика в каждый дом!
# Возведение в степень
print ( 10 * * 2 )
# 100
print ( 2 * * 4 )
# 16
print ( 3 * * 0.5 )
# 1.7320508075688772
print ( 3 * * -2 )
# 0.1111111111111111
# Остаток от деления
print ( 11 % 4 )
# 3
print ( 101 % 7 )
# 3
print ( 34 % 5 )
# 4
# Деление нацело
print ( 20 // 4 )
# 5
print ( 129 // 11 )
# 11
print ( 100 // 61 )
# 1
Операции сравнения в python
Операции сравнения в отличие от арифметические имеют всего два результата: True и False. Чаще всего такие операции используются в условии циклов, условных оператов, а также в некоторых функциях, например, filter.
# Операция равенства: True, если X равен Y
print ( 10 == 10 )
# True
print ( 666 == 661 )
# False
# Операция неравенства: True, если X не равен Y
print ( 666 != 661 )
# True
print ( 666 != 666 )
# False
# Операция больше: True, если X больше Y
print ( 120 > 2 )
# True
print ( 1000 > 1999 )
# False
# Операция меньше: True, если X меньше Y
print ( 121 120 )
# False
print ( 0 1 )
# True
# Операция меньше или равно: True, если X меньше или равен Y
print ( 6 6 )
# True
print ( 5 2 )
# False
# Операция больше или равно: True, если X больше или равен Y
print ( 1000 >= 10000 )
# False
print ( 9999 >= 9999 )
# False
Логические операции
Логические операции, как и операции сравнения, имеют всего два возможных результата: True и False. Используются для объединения операций сравнения в условиях циклов и условных оператов
# Оператор «and» или конъюнкция.
# True, если и выражение X, и выражение Y равны True
print ( 10 == 10 and 10 > 2 )
# True
print ( 666 == 661 and 9 > 0 )
# False
# Оператор «or» или дизъюнкция.
# True, если или выражение X, или выражение Y равны True
print ( 666 == 661 or 9 > 0 )
# True
print ( 666 == 661 or 9 0 )
# False
# Оператор » not » или инверсия меняет значение на противоположное.
# True, если выражение X равно False
print ( not 120 > 2 )
# False
print ( not 1000 999 )
# True
print ( not ( 121 121 and 10 == 2 ))
# True
Округление чисел в python
Всё дело в округлении! В python есть несколько замечательных функций, которые округляют число до указанного знака. Одной из таких функций является round :
pi = 3.14159265358979323846264338327
print ( round (pi, 1 ))
# 3.1
print ( round (pi, 2 ))
# 3.14
print ( round (pi, 3 ))
# 3.12
print ( round (pi, 4 ))
# 3.1416
print ( round (pi, 10 ))
# 3.1415926536
print ( round (pi, 15 ))
# 3.141592653589793
Рассмотрим любопытный пример:
print ( round ( 2.5 ))
# 2
print ( round ( 3.5 ))
# 4
Если на вашем лице застыл немой вопрос: «почему?», то я вас понимаю. В школе нас учили, что дроби 1.1, 1.2, 1.3, 1.4 округляются до единицы, а 1.5, . 1.9 до двойки. Но python думает по-другому. Есть два типа округления: арифметическое и банковское. Именно арифметическому округлению вас учили в школе. Python использует как раз-таки банковское округление, его еще называют округлением до ближайшего четного. Приведу еще несколько примеров:
print ( round ( 10.51213 ))
# 11
print ( round ( 23.5 ))
# 24
print ( round ( 22.5 ))
# 22
Примеры решения задач
Есть N оранжевых конфет и K учеников, сколько достанется каждому из них, если разделить их поровну? Сколько конфет останется после дележа?
n = int ( input ( ‘Введите количество конфет: ‘ ))
k = int ( input ( ‘Введите количество учеников: ‘ ))
a = n // k
b = n % k
print ( ‘Каждому по’ , a)
print ( ‘Осталось’ , b)
Даны стороны прямоугольника a и b. Вычислите периметр, площадь и диагональ прямоугольника.
a = int ( input ( ‘Введите a: ‘ ))
b = int ( input ( ‘Введите b: ‘ ))
s = a * b
p = 2 * (a + b)
d = (a * * 2 + b * * 2 ) * * 0.5
print ( ‘Площадь:’ , a)
print ( ‘Периметр:’ , b)
print ( ‘Диагональ:’ , c)
Дано число секунд n на секундомере. Посчитайте прошедших минут и секунд.
n = int ( input ( ‘Введите n: ‘ ))
m = n // 60
s = n % 60
print ( str (m) + ‘:’ + str (s))
Решение задач
1. Дано целое число A. Проверить истинность высказывания: «Число A является четным».
2. Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».
3. Даны два целых числа: A, B. Проверить истинность высказывания: «Числа A и B имеют одинаковую четность».
4. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Хотя бы одно из чисел A, B, C положительное».
5. Дано четырехзначное число. Проверить истинность высказывания: «Данное число читается одинаково слева направо и справа налево».
6. Дано число секунд n на часах. Посчитайте прошедших часов, минут и секунд.
7. Дано натуральное число. Выведите его последнюю цифру.
8. Дано положительное действительное число X. Выведите его дробную часть.
9. Дано положительное действительное число X. Выведите его первую цифру после десятичной точки.
10. Пирожок в столовой стоит a рублей и b копеек. Определите, сколько рублей и копеек нужно заплатить за n пирожков. Программа получает на вход три числа: a, b, n, и должна вывести два числа: стоимость покупки в рублях и копейках.
11. Дано натуральное число. Найдите число десятков в его десятичной записи.
12. Дано двузначное число. Найдите сумму его цифр.
13. Дано трехзначное число. Найдите сумму его цифр.
14. Дано трехзначное число. Проверить истинность высказывания: «Все цифры данного числа различны».
15. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую или убывающую последовательность».
16. С начала суток прошло N секунд (N — целое). Найти количество часов, минут и секунд на электронных часах.
Лучший алгоритм решения задач по программированию на Python
По-прежнему актуальны споры о фактической пользе таких веб-сайтов по Python-программированию, как Codewars или Leetcode, и их роли в развитии профессиональных навыков разработчиков. Но несмотря на это, многие все равно прибегают к их помощи для подготовки к собеседованиям, улучшения своего мастерства и/или просто забавы ради. Так или иначе, но этим ресурсам определенно найдется место в жизни любого программиста Python или специалиста по данным.
В этой статье вам предлагается максимально эффективный подход к проработке вопросов по Python-программированию. Мы сформулируем относительно простую задачу, разработаем план с применением псевдокода и решим ее разными способами, начиная с самого простого.
Формулировка задачи
Задача: написать функцию, принимающую одно целочисленное значение и возвращающую сумму целых чисел от 0 до этого значения включительно. При использовании нецелочисленного значения функция должна возвращать 0.
Итак, при передаче функции числа 5 она вернет сумму целых чисел от 0 до 5 или (0+1+2+3+4+5), которая равняется 15. Если передаваемое значение относится к другому типу, отличному от целого числа, такому как строка или число с плавающей точкой и т. д., функция вернет 0.
Разработка плана
На первом этапе необходимо решить задачу, используя псевдокод. Он позволит спланировать действия без оглядки на синтаксис.
Попробуем что-нибудь в таком роде:
Мы определили функцию add , принимающую значение num . Внутри нее в виде комментариев схематично прописываются шаги. Если передаваемое функции значение является целым числом, то мы складываем числа от 0 до этого значения включительно и затем возвращаем сумму. Если же оно не принадлежит к типу целых чисел — просто возвращаем 0. После этого прописываем несколько примеров конкретных входных данных для получения желаемого вывода.
Распишем подробнее следующий шаг псевдокода:
Это можно сделать несколькими способами. Как будет выглядеть псевдокод, если мы попробуем выполнить этот шаг с помощью цикла for ?
Теперь постараемся справиться с задачей на основе разработанного плана!
Цикл for
С помощью цикла for задача решается следующим образом:
Проанализируем этот код.
Сначала с помощью функции type проверяем, является ли передаваемое значение num целым числом.
Если тип — целое число, создаем переменную sum и присваиваем ей значение 0.
Затем с помощью цикла for и функции range перебираем целые числа от 0 до входного значения. Обратите внимание, что функция range создает одноименный итерируемый объект, который начинается с 0 (если не указано конкретное начальное значение) и переходит к числу, меньшему, чем завершающее цикл значение (поскольку оно единственно возможное). Следовательно, к этому значению нужно прибавить 1 (num+1), так как требуется сложить все целые числа от 0 до num включительно.
Функция range создает итерируемый объект range , что позволяет перебирать в нем элементы в цикле for , прибавляя каждое число или x к переменной sum .
По завершению итераций функция возвращает sum .
И наконец, если передаваемое функции значение не является целым числом, возвращаем 0.
Вариант кода без комментариев.
Протестировав функцию add , получаем правильные результаты.
Избранный способ отлично справляется с данной задачей по программированию. Код выполняет свое назначение, легко читаем и работает должным образом. Но, предприняв попытку найти другие варианты достижения поставленной цели, мы извлечем для себя больше пользы, поскольку освежим знания Python и прокачаем навыки решения проблемных ситуаций. Эти приемы могут быть более или менее пайтонические, но в любом случае это интересный и полезный опыт поиска разных подходов к одной и той же задаче.
Итак, приступаем к новому способу решения.
Функция reduce
Функция reduce принимает итерируемый объект и приводит его к единичному суммарному значению. У нее может быть 3 аргумента, два из которых являются обязательными: функция с 2 аргументами и итерируемый объект.
Вместо цикла for воспользуемся reduce для нахождения суммы итерируемого объекта и решения поставленной задачи.
Лямбда-функция служит в качестве аргумента, а объект range используется как итерируемый объект. Reduce() приводит range к единичному суммарному значению sum , которое мы возвращаем.
Тернарные операторы
С помощью тернарных операторов можно еще больше сократить код, оформив инструкцию if/else в одну строку следующим образом:
x if C else y
С — это условие, которое проверяется в первую очередь. Если оно True, то вычисляется x, иначе — y, после чего возвращаются соответствующие значения.
В коде это можно реализовать так:
Благодаря всем этим изменениям нам удалось сократить код внутри функции до одной строки. Возможно, это не самый читаемый и пайтонический способ решения, но тем не менее он способствует развитию навыков программирования за счет обдумывания разных подходов к одной и той же проблеме.
Далее разберем еще один способ.
Функция sum()
Он состоит в применении встроенной функции Python — sum() . Она принимает итерируемый объект и возвращает сумму его элементов. Возможен вариант с передачей начального значения, если его первично требуется добавить к элементам.
Опробуем эту функцию в деле:
Вероятно, это самый лучший способ справиться с задачей, поскольку код одновременно и максимально компактный, и легко читаемый. Кроме того, можно не сомневаться в его отличной производительности.
Заключение
В данной статье мы продемонстрировали, что решение задачи по Python разными способами улучшает навыки программирования за счет пополнения копилки знаний. Сформулировав задачу, мы рассмотрели этапы ее решения. Сначала наметили последовательность действий с помощью псевдокода, после чего реализовали задуманное разными способами, используя сначала цикл for , а затем функцию reduce . Применение тернарных операторов позволило еще больше подсократить код и при этом сохранить его читаемость. И наконец, благодаря встроенной функции sum наряду с тернарными операторами мы нашли наиболее лаконичный и пайтонический способ решения поставленной задачи.
Как решить пример в питоне
- Темы
- ____________________
- Списки, словари, множества, кортежи
- Функции, условия и циклы
- Работа со строками
- Модули и пакеты
- ООП. Классы и объекты.
- _____________________
- Задачник по Python
Еще задачи по теме
В данном уроке разбираемся с основными составляющими функции в Python: аргументы, тело, возвращаемое значение. Изучаем структуру и синтаксис условного оператора if..elif..else. Учимся писать циклы for и while. Решаем задачи.
Еще задачи по теме
В данном уроке учимся выполнять основные действия над строковым типом данных в Python: создание, экранирование, конкатенация и умножение, срезы, форматирование, строковые методы. Решаем задачи.
Еще задачи по теме
В данном уроке рассматриваем модули и пакеты из стандартной библиотеки Python и репозитория PyPI. Разбираемся с командами для импорта: import и from..import . Учимся выполнять абсолютный и относительный импорт. Настраиваем виртуальные пространства venv . Создаем собственные модули.




Задачи по теме
В данном уроке говорим про основные принципы объектно-ориентированного программирования: абстракцию, инкапсуляцию, наследование и полиморфизм. Учимся создавать классы и объекты классов в Python. Рассматриваем, чем отличаются понятия поля, свойства, методы и атрибуты класса. Изучаем особенности организации уровней доступа к атрибутам: Public, Protected и Private.
![]()
![]()
Также может быть интересно
Donation сайту smartiqa.ru
Все материалы проекта Smartiqa были и остаются бесплатными. Пожертвованные деньги пойдут на оплату хостинга, продление доменного имени, администрирование и развитие сайта.
Доступны 2 способа осуществления пожертвования:
1. Оплата через сайт сервиса «ЮMoney», что гарантирует корректность и безопасность процедуры оплаты.
2. Перевод напрямую на карту Тинькофф.
Обратите внимание, что в обоих случаях перевод осуществляется физическому лицу.
Donation сайту smartiqa.ru
Все материалы проекта Smartiqa были и остаются бесплатными. Пожертвованные деньги пойдут на оплату хостинга, продление доменного имени, администрирование и развитие сайта.
Доступны 2 способа осуществления пожертвования:
1. Оплата через сайт сервиса «ЮMoney», что гарантирует корректность и безопасность процедуры оплаты.
2. Перевод напрямую на карту Тинькофф.
Обратите внимание, что в обоих случаях перевод осуществляется физическому лицу.

Получатель: Татьяна Васильевна К.
Номер карты Тинькофф: 5536 9137 5246 3444
Номер телефона: +79529984747
Так же можно воспользоваться QR-кодом выше.
Задачи по Python для начинающих от Tproger и GeekBrains
Вместе с факультетом Python-разработки GeekUniversity собрали для вас несколько простых задач по Python для обучения и тренировки. Их можно решать в любом порядке.
Обратите внимание, что у любой задачи по программированию может быть несколько способов решения. Чтобы посмотреть добавленный нами вариант решения, кликните по соответствующей кнопке. Все приведённые варианты написаны на Python 3.
Задача 1
Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] .
Выведите все элементы, которые меньше 5 .
Самый простой вариант, который первым приходит на ум — использовать цикл for :
Также можно воспользоваться функцией filter , которая фильтрует элементы согласно заданному условию:
И, вероятно, наиболее предпочтительный вариант решения этой задачи — списковое включение:
print([elem for elem in a if elem < 5])
Задача 2
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] ;
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] .
Нужно вернуть список, который состоит из элементов, общих для этих двух списков.
Можем воспользоваться функцией filter :
Или списковым включением:
result = [elem for elem in a if elem in b]
А можно привести оба списка к множествам и найти их пересечение:
result = list(set(a) & set(b))
Однако в таком случае каждый элемент встретится в результирующем списке лишь один раз, т.к. множество поддерживает уникальность входящих в него элементов. Первые два решения (с фильтрацией) оставят все дубли на своих местах.

Задача 3
Отсортируйте словарь по значению в порядке возрастания и убывания.
Импортируем нужный модуль и объявляем словарь:
Сортируем в порядке возрастания:
И в порядке убывания:
Задача 4
Напишите программу для слияния нескольких словарей в один.
Допустим, вот наши словари:
Объединить их можно вот так:
А можно с помощью «звёздочного» синтаксиса:
О звёздочном синтаксисе можно прочитать в нашей статье.
Задача 5
Найдите три ключа с самыми высокими значениями в словаре my_dict = <'a':500, 'b':5874, 'c': 560,'d':400, 'e':5874, 'f': 20>.
Можно воспользоваться функцией sorted :
Аналогичный результат можно получить с помощью функции nlargest из модуля heapq :
Задача 6
Напишите код, который переводит целое число в строку, при том что его можно применить в любой системе счисления.
Второй аргумент функции int отвечает за указание основания системы счисления:
Задача 7
Нужно вывести первые n строк треугольника Паскаля. В этом треугольнике на вершине и по бокам стоят единицы, а каждое число внутри равно сумме двух расположенных над ним чисел.
Задача 8
Напишите проверку на то, является ли строка палиндромом. Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево.
Тут всё просто, достаточно сравнить строку с её обратной версией, для чего можно использовать встроенную функцию reversed:
Того же эффекта можно добиться с помощью срезов:
Задача 9
Сделайте так, чтобы число секунд отображалось в виде дни:часы:минуты:секунды .
Задача 10
Вы принимаете от пользователя последовательность чисел, разделённых запятой. Составьте список и кортеж с этими числами.
Задача 11
Выведите первый и последний элемент списка.
Задача 12
Напишите программу, которая принимает имя файла и выводит его расширение. Если расширение у файла определить невозможно, выбросите исключение.
Задача 13
При заданном целом числе n посчитайте n + nn + nnn.
Задача 14
Напишите программу, которая выводит чётные числа из заданного списка и останавливается, если встречает число 237.
Задача 15
Напишите программу, которая принимает два списка и выводит все элементы первого, которых нет во втором.
Задача 16
Выведите список файлов в указанной директории.
Задача 17
Сложите цифры целого числа.
Задача 18
Посчитайте, сколько раз символ встречается в строке.
Задача 19
Поменяйте значения переменных местами.
Можно написать монструозную конструкцию в стиле языка C:
Но в Python есть более удобный способ для решения этой задачи:
Задача 20
С помощью анонимной функции извлеките из списка числа, делимые на 15.
Задача 21
Нужно проверить, все ли числа в последовательности уникальны.
Задача 22
Напишите программу, которая принимает текст и выводит два слова: наиболее часто встречающееся и самое длинное.
Хотите вырасти от новичка до профессионала? Факультет Python-разработки GeekUniversity даёт год опыта для вашего резюме. Обучайтесь на практических заданиях, по-настоящему освойте Python и станьте ближе к профессии мечты.
Узнать больше