Как решить задачу в питоне
Перейти к содержимому

Как решить задачу в питоне

  • автор:

Задачи по Python

Python 3 логотип

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

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

Также для этих задач есть репозиторий с тестами и моими решениями (чтобы проверить себя).

Для запуска тестов для вашей функции проще всего будет добавить код из папки с тестами в конец файла с функцией.

А теперь, собственно, задачи:

Простейшие арифметические операции (1)

Написать функцию arithmetic, принимающую 3 аргумента: первые 2 — числа, третий — операция, которая должна быть произведена над ними. Если третий аргумент +, сложить их; если , то вычесть; * — умножить; / — разделить (первое на второе). В остальных случаях вернуть строку «Неизвестная операция«.

Високосный год (2)

Написать функцию is_year_leap, принимающую 1 аргумент — год, и возвращающую True, если год високосный, и False иначе.

Квадрат (3)

Написать функцию square, принимающую 1 аргумент — сторону квадрата, и возвращающую 3 значения (с помощью кортежа): периметр квадрата, площадь квадрата и диагональ квадрата.

Времена года (4)

Написать функцию season, принимающую 1 аргумент — номер месяца (от 1 до 12), и возвращающую время года, которому этот месяц принадлежит (зима, весна, лето или осень).

Банковский вклад (5)

Пользователь делает вклад в размере a рублей сроком на years лет под 10% годовых (каждый год размер его вклада увеличивается на 10%. Эти деньги прибавляются к сумме вклада, и на них в следующем году тоже будут проценты).

Написать функцию bank, принимающая аргументы a и years, и возвращающую сумму, которая будет на счету пользователя.

Простые числа (6)

Написать функцию is_prime, принимающую 1 аргумент — число от 0 до 1000, и возвращающую True, если оно простое, и False — иначе.

Правильная дата (7)

Написать функцию date, принимающую 3 аргумента — день, месяц и год. Вернуть True, если такая дата есть в нашем календаре, и False иначе.

XOR-шифрование (8)

Написать функцию XOR_cipher, принимающая 2 аргумента: строку, которую нужно зашифровать, и ключ шифрования, которая возвращает строку, зашифрованную путем применения функции XOR (^) над символами строки с ключом. Написать также функцию XOR_uncipher, которая по зашифрованной строке и ключу восстанавливает исходную строку.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Как решить такую задачу на Python? [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

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

Закрыт 9 месяцев назад .

  1. Строится восьмибитная двоичная запись числа N.
  2. Инвертируются все разряды исходного числа (0 заменяется на 1, 1 на 0).
  3. К полученному двоичному числу прибавляют единицу.
  4. Полученное число переводится в десятичную систему счисления. Чему равен результат работы алгоритма для N = 80?1

ОСОБЕННОСТИ РЕШЕНИЯ МАТЕМАТИЧЕСКИХ ЗАДАЧ В СРЕДЕ PYTHON Текст научной статьи по специальности «Математика»

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Акишин Борис Алексеевич

О применении библиотек Python для расчета пластин
Система компьютерной алгебры Sage как средство для решения систем уравнений
Обзор языка программирования Python для решения задач математического моделирования
Динамическая визуализация решения дифференциальных уравнений при преподавании высшей математики
Использование свободного программного обеспечения для решения одной задачи математической физики
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

FEATURESOFSOLVINGMATHEMATICALPROBLEMSUSINGPYTHON ENVIRONMENT

Opportunities are investigated and examples are provided of using Python libraries at the solution of the typical mathematical tasks. Comparison with the known systems of computer mathematics is made.

Текст научной работы на тему «ОСОБЕННОСТИ РЕШЕНИЯ МАТЕМАТИЧЕСКИХ ЗАДАЧ В СРЕДЕ PYTHON»

ОСОБЕННОСТИ РЕШЕНИЯ МАТЕМАТИЧЕСКИХ ЗАДАЧ В СРЕДЕ PYTHON

Акишин Борис Алексеевич, кандидат технических наук, доцент, Донской государственный технический университет, г. Ростов-на-Дону, Российская Федерация е-mail: akiboralex@mail.ru

Candidate of Technical Sciencs, Associate Professor Don State Technical University Rostov-on-Don, Russia

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

Ключевые слова: компьютерные математические системы, решение математических задач, компьютерная среда PYTHON

СОВРЕМЕННЫЕ ТЕНДЕНЦИИ РАЗВИТИЯ МЕТОДИКИ ОБУЧЕНИЯ МАТЕМАТИКЕ В ВЫСШЕЙ ШКОЛЕ

В работах [1, 2] приводится обоснование целесообразности активного использования в процессе изучения математики в школе и вузе некоммерческих систем компьютерной математики (СКМ), в частности, программ Maxima и GeoGebra. В то же время, если учащиеся, изучают язык программирования Python, то, естественно, привлечь их и к решению математических задач именно в среде Python, тем более, что в его основных научных библиотеках numpy, sympy, scipy и других реализовано много известных аналитических и численных алгоритмов реше-

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

обладает хорошо развитыми возможностями визуализации двумерных и трехмерных данных.

Приведем несколько примеров аналитических (символьных) решений в Ру^опзадач линейной алгебры и математического анализа и сравним их с аналогичными решениями в упомянутых СКМ.

Используя интерактивную оболочку ¡Ру^оп, загрузим библиотеку символьных вычислений sympy и установим режим графической печати, который позволяет отображать результаты решения в привычном математическом виде:

Пример 1. Решить неопределенную систему линейных алгебраических уравнений (СЛАУ)[3]:

х^ + Х2 Х3 + Х4 — 2,

2хх + х2 + 3х3 — х4 — -1, 3хх + 2х2 + 2х3 — 1, X! + 4х3 — 2х4 — —3 Решим пример средствами Python. Для символьной записи уравнений в библио-

теке sympy имеется функция Eq(expr1,expr2). Если выражения expr1 и expr2, равны то функция Eq() возвращает значение True.

Для решения систем линейных уравнений предназначена, в первую очередь, функция linsolve(. ), в качестве аргументов

которой задаются списки уравнений и неизвестных переменных:

Общее решение этой неопределенной СЛАУ получено в привычном для студентов виде кортежа, где базисные переменные выражены через свободные.

Таким образом, аналитическое решение систем линейных алгебраических уравнений небольшой размерности, в том числе и неопределенных, в среде Pythonне представляет особых сложностей, не требует дополнительных проверок совместности и нагляднее, чем в некоторых СКМ, например, МаШСАО.

Пример .¿.Вычислить неопределенный

интеграл: /х3 зт(4х2)^х.

Отметим, что достаточно часто при вычислении таких интегралов методом «по частям» студенты неправильно выбирают части.

Для символьного интегрирования вРу-thonпредназначена функция integrate(. ) из библиотеки sympy. С ее помощью можно вычислять как неопределенные, так и определенные интегралы. Первым

аргументом она принимает символьное выражение, которое будет

интегрироваться, вторым - переменную интегрирования или кортеж, состоящий из имени переменной и ее нижнего и верхнего пределов. Если второй аргумент - только имя, то вычисляется неопределенный интеграл, т. е. первообразная подынтеграль-ной

Если функция integrate(. ) не может вычислить перовообразную, то, в зависимости от режима тЫона возвращает на экран либо строку с невычисляе-мым эквивалентом Integral(), либо невы-численное исходное выражение. Чтобызатем вычислить интеграл, нужно использовать метод ёоЩ).

Воспользуемся этим фактом, чтобы сразу получить ответ примера в наглядной форме:

Заметим, чтasympy не включает в результат произвольную постоянную интегрирования. Однако, константу можно добавить, если сформулировать

задачу как решение соответствующего диффе-ренциального уравнения.

Проверим результат дифференцированием (к объекту применяется метод diff() ):

Если первообразную не удалось найти, то, как было указано ранее, отображается невычисляемый объект 1п1е(^га1()в виде исходного выражения, а

функция Eq() возвращает значение True, например,

In [4]: integrate((3*х+1)/sqrt(5*x**2-2*x+l)jx) Out[4]:

Fxl=Integral( (3*x-Kl)/sqrt(Б*х**2-2*х+1)лх) Eq(Fxlj Fxl.doit())

Считается, что вычисление первообразных является для студентов одной из наиболее сложных задач математического анализа, да и не все СКМ справляются с отдельными примерами. Как показывает практика, во многих случаях вычисление первообразных в среде Pythonпредпочти-тельнее, так как просто и наглядно, но в сложных примерах нужно пробовать использовать другие программы, например, Maxima, GeoGebra и т.д.

Пример 3. Найти общее решение обыкновенного дифференциального уравнения (ОДУ) [3]: х • у' — 2у = 2х4.

Данное ОДУ является линейным первого порядка.

При решении ОДУ в sympy обычно используется следующая последовательность инструкций:

а) объявляется символьная независимая переменная х и символьная функция £ которая будет представлять решение;

б) создается объект, представляющий уравнение; в) решается дифференциальное уравнение с помощью функции dsolve(), у которой первым аргументом является объект уравнения, а вторым -искомая функция. Итак, получаем:

Обращаем внимание на то, что решение содержит произвольную переменную С!. Функция ^оЬе() может использовать несколько различных методов решения ОДУ. Чтобы получить список методов, которые можно использовать для решения конкретного уравнения, следует использовать инструкцию classify_ode (уравнение, выражение/функция) .Функция dsolve () решает аналитически большинство известных типов ОДУ и систем, интегрируемых в квадратурах. Решения представляются, как правило, в наглядном виде. Опция С функции dsolve() позволяет задавать граничные условия и решать задачу Коши.

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

Заметим, что ответы, получаемые студентом на бумаге, зачастую отличаются от ответов, выдаваемых СКМ. В таких случаях студент должен провести углубленный анализ, разобраться в причинах несоответствия и довести решение до конца

Если студент знаком с основами программирования на Python, то при освоении разделов математики он может с успехом использовать его библиотеки и пакеты. Приведены примеры аналитического (символьного) решения лишь некоторых типовых математических задач и не рассматривались численные алгоритмы. Процесс решения и представление результатов на Python имеют преимущества перед другими СКМ, однако есть и недостатки.

1. Акишин Б. А. Применение пакета Maxima при решении прикладных инженерных и экономических задач: учеб.пособие / Б. А. Акишин, Н. Ю. Богданова, А. В. Галабур-дин и др. - Ростов-на-Дону : Издательский центр ДГТУ, 2016. - 84 с.

2. Акишин Б. А. Использование систем компьютерной математики при изучении математических дисциплин / Б. А. Акишин: // Эвристическое обучение математике : Материалы IV Междунар.научно-метод. конф. ЭОМ-2018 (19-20 апреля 2018 г.). - Донецк: Изд-во ДонНУ, 2018. -С. 10-12.

3. Акишин Б. А. Использование Pythom процессе изучения математики в техническом вузе / Б. А. Акишин,В. А. Воронцова //Актуальные проблемы обучения математике и информатике в школе и вузе: материалы IV Междунар. научной конф. Т. 2. - Москва : ФГБОУ ВО«Московский пед. гос. университет» МПГУ, 2018. -С. 123-127.

Abstract. Akishin B. FEATURES OF SOLVING MATHEMATICAL PROBLEMS USING PYTHON ENVIRONMENT. Opportunities are investigated and examples are provided of using Python libraries at the solution of the typical mathematical tasks. Comparison with the known systems of computer mathematics is made.

Key words: computer math systems, mathematical problems solving, PYTHON computer envi-ronment

Статья представлена профессором Е.Г.Евсеевой.

Поступила в редакцию 29.04.2019 г.

Задачи по Python для начинающих от Tproger и GeekBrains

Для обучения программированию на питоне нужны тренировки. Совместно с GeekBrains собрали для вас несколько простых задач на Python 3 c решениями.

Вместе с факультетом Python-разработки GeekUniversity собрали для вас несколько простых задач по Python для обучения и тренировки. Их можно решать в любом порядке.

Обратите внимание, что у любой задачи по программированию может быть несколько способов решения. Чтобы посмотреть добавленный нами вариант решения, кликните по соответствующей кнопке. Все приведённые варианты написаны на Python 3.

Задача 1

Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] .

Выведите все элементы, которые меньше 5 .

Вариант решения

Самый простой вариант, который первым приходит на ум — использовать цикл for :

for elem in a: if elem < 5: print(elem)

Также можно воспользоваться функцией filter , которая фильтрует элементы согласно заданному условию:

print(list(filter(lambda elem: elem < 5, a)))

И, вероятно, наиболее предпочтительный вариант решения этой задачи — списковое включение:

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 = list(filter(lambda elem: elem in b, a)) 

Или списковым включением:

result = [elem for elem in a if elem in b]

А можно привести оба списка к множествам и найти их пересечение:

result = list(set(a) & set(b))

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

Python RegEx: практическое применение регулярок

Задача 3

Отсортируйте словарь по значению в порядке возрастания и убывания.

Вариант решения

Импортируем нужный модуль и объявляем словарь:

import operator d =

Сортируем в порядке возрастания:

result = dict(sorted(d.items(), key=operator.itemgetter(1))) 

И в порядке убывания:

result = dict(sorted(d.items(), key=operator.itemgetter(1), reverse=True)) 

Задача 4

Напишите программу для слияния нескольких словарей в один.

Вариант решения

Допустим, вот наши словари:

dict_a = dict_b = dict_c =

Объединить их можно вот так:

result = <> for d in (dict_a, dict_b, dict_c): result.update(d) 

А можно с помощью «звёздочного» синтаксиса:

О звёздочном синтаксисе можно прочитать в нашей статье.

Задача 5

Найдите три ключа с самыми высокими значениями в словаре my_dict = .

Вариант решения

Можно воспользоваться функцией sorted :

result = sorted(my_dict, key=my_dict.get, reverse=True)[:3] 

Аналогичный результат можно получить с помощью функции nlargest из модуля heapq :

from heapq import nlargest result = nlargest(3, my_dict, key=my_dict.get) 

Читайте также: Всё о сортировке на Python

Задача 6

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

Вариант решения

Второй аргумент функции int отвечает за указание основания системы счисления:

Задача 7

Нужно вывести первые n строк треугольника Паскаля. В этом треугольнике на вершине и по бокам стоят единицы, а каждое число внутри равно сумме двух расположенных над ним чисел.

Вариант решения

def pascal_triangle(n): row = [1] y = [0] for x in range(max(n, 0)): print(row) row = [left + right for left, right in zip(row + y, y + row)] pascal_triangle(6) 

Задача 8

Напишите проверку на то, является ли строка палиндромом. Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево.

Вариант решения

Тут всё просто, достаточно сравнить строку с её обратной версией, для чего можно использовать встроенную функцию reversed:

def is_palindrome(string): return string == ''.join(reversed(string)) print(is_palindrome('abba')) 

Того же эффекта можно добиться с помощью срезов:

def is_palindrome(string): return string == string[::-1] print(is_palindrome('abba')) 

Задача 9

Сделайте так, чтобы число секунд отображалось в виде дни:часы:минуты:секунды .

Вариант решения

def convert(seconds): days = seconds // (24 * 3600) seconds %= 24 * 3600 hours = seconds // 3600 seconds %= 3600 minutes = seconds // 60 seconds %= 60 print(f':::') convert(1234565) 

Задача 10

Вы принимаете от пользователя последовательность чисел, разделённых запятой. Составьте список и кортеж с этими числами.

Вариант решения

values = input('Введите числа через запятую: ') ints_as_strings = values.split(',') ints = map(int, ints_as_strings) lst = list(ints) tup = tuple(lst) print('Список:', lst) print('Кортеж:', tup) 

Задача 11

Выведите первый и последний элемент списка.

Вариант решения

lst = [1, 2, 3, 4, 5] print(f'Первый: ; последний: ') 

Задача 12

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

Вариант решения

def get_extension(filename): filename_parts = filename.split('.') if len(filename_parts) < 2: # filename has no dots raise ValueError('the file has no extension') first, *middle, last = filename_parts if not last or not first and not middle: # example filenames: .filename, filename., file.name. raise ValueError('the file has no extension') return filename_parts[-1] print(get_extension('abc.py')) print(get_extension('abc')) # raises ValueError print(get_extension('.abc')) # raises ValueError print(get_extension('.abc.def.')) # raises ValueError

Задача 13

При заданном целом числе n посчитайте n + nn + nnn.

Вариант решения

def solve(n): n1 = n n2 = int(str(n) * 2) n3 = int(str(n) * 3) print(n1 + n2 + n3) solve(5) 

Задача 14

Напишите программу, которая выводит чётные числа из заданного списка и останавливается, если встречает число 237.

Вариант решения

numbers = [ 386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, ] for x in numbers: if x == 237: break elif x % 2 == 0: print(x) 

Задача 15

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

Вариант решения

set_1 = set(['White', 'Black', 'Red']) set_2 = set(['Red', 'Green']) print(set_1 - set_2) 

Задача 16

Выведите список файлов в указанной директории.

Вариант решения

from os import listdir from os.path import isfile, join files = [f for f in listdir('/home') if isfile(join('/home', f))] print(files) 

Задача 17

Сложите цифры целого числа.

Вариант решения

def sum_digits(num): digits = [int(d) for d in str(num)] return sum(digits) print(sum_digits(5245)) 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *