Задания для питон программиста

Задачник 2021

Сборник задач с решениями по программированию на языке Python.

Задачник 2021

Python Workbook Cover

Любое целое число независимо от объема потребляемой памяти в языке Python представлено типом int. Напишете ли вы 22 или 22222222222222222222, оно все равно будет определяться как int, просто в памяти вашего устройства это значение будет занимать разную память .

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

В логическом (булевом) типе данных имеется 2 значения: True («правда») и False («ложь»). Класс bool – это подкласс типа int (т.е. целых чисел). True и False – синглтон-объекты, которые по ходу выполнения программы никогда не меняют место расположения в памяти .

Список – последовательность элементов, объединенных в один контейнер. Главная особенность – они изменяемы. Элементы списка индексируются, состоят в основном из однотипных данных, перебираются, сохраняют порядок. Для решения заданий необходимо повторить свойства и методы списков .

Рассмотрим особенности словарей в Python, операции над ними; дополнительные структуры данных, образованные от них; темы, необходимые для решения заданий.

Специфика типа данных кортеж (набор) в Python, методы, операции. Примеры использования кортежей, задачи с решениями.

Специфика типа данных множества (set) в Python, методы, операции. Примеры использования множеств, задачи с решениями.

Строки как тип данных в Python. Основные методы и свойства строк. Примеры работы со строками, задачи с решениями.

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

Функции, их типы, причины применения. Аргументы и параметры, разновидности. Примеры использования и задачи с решениями.

Импорт библиотек в Python. Различие модулей и пакетов, причины их использования. Актуальные вопросы для проверки понимания темы и задание для самостоятельной практики.

Объекты и классы в Python, их методы и свойства. Типы методов: статичные и классовые, магические, публичные и приватные. Свойства как декораторы. Применение принципов ООП в Питоне.

Чтение и запись файлов: инструментарий в Питоне. Работа с файлами разных типов: текстовыми, графическими, таблицами. Контекстный менеджер.

Понятие итератора и итерабельного объекта и их протоколы. Встроенные инструменты для работы с перебираемыми коллекциями. Ленивые итераторы. Генераторы.

Также может быть интересно

Donation сайту smartiqa.ru

Все материалы проекта Smartiqa были и остаются бесплатными. Пожертвованные деньги пойдут на оплату хостинга, продление доменного имени, администрирование и развитие сайта.

Доступны 2 способа осуществления пожертвования:
1. Оплата через сайт сервиса «ЮMoney», что гарантирует корректность и безопасность процедуры оплаты.
2. Перевод напрямую на карту Тинькофф.

Читайте также:  Send email python without smtp

Обратите внимание, что в обоих случаях перевод осуществляется физическому лицу.

Donation сайту smartiqa.ru

Все материалы проекта Smartiqa были и остаются бесплатными. Пожертвованные деньги пойдут на оплату хостинга, продление доменного имени, администрирование и развитие сайта.

Доступны 2 способа осуществления пожертвования:
1. Оплата через сайт сервиса «ЮMoney», что гарантирует корректность и безопасность процедуры оплаты.
2. Перевод напрямую на карту Тинькофф.

Обратите внимание, что в обоих случаях перевод осуществляется физическому лицу.

Получатель: Татьяна Васильевна К.
Номер карты Тинькофф: 5536 9137 5246 3444
Номер телефона: +79529984747
Так же можно воспользоваться QR-кодом выше.

Источник

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

Обложка: Задачи по 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(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]

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

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

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

Задача 3

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

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

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

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

Задача 4

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

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

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

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)

Задача 6

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

Читайте также:  Php multiple and or conditions

Второй аргумент функции 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))

Разработка на Python с нуля: роадмап программиста

Задача 18

Посчитайте, сколько раз символ встречается в строке.

string = 'Python Software Foundation' string.count('o')

Задача 19

Поменяйте значения переменных местами.

Читайте также:  Java string lines to array

Можно написать монструозную конструкцию в стиле языка C:

x = 5 y = 10 temp = x x = y y = temp

Но в Python есть более удобный способ для решения этой задачи:

Задача 20

С помощью анонимной функции извлеките из списка числа, делимые на 15.

nums = [45, 55, 60, 37, 100, 105, 220] result = list(filter(lambda x: not x % 15, nums))

Задача 21

Нужно проверить, все ли числа в последовательности уникальны.

def all_unique(numbers): return len(numbers) == len(set(numbers)) 

Задача 22

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

import collections text = 'lorem ipsum dolor sit amet amet amet' words = text.split() counter = collections.Counter(words) most_common, occurrences = counter.most_common()[0] longest = max(words, key=len) print(most_common, longest) 

Хотите вырасти от новичка до профессионала? Факультет Python-разработки GeekUniversity даёт год опыта для вашего резюме. Обучайтесь на практических заданиях, по-настоящему освойте Python и станьте ближе к профессии мечты.

Узнать больше

Что думаете?

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

Как вы собираетесь искать хороших сотрудников, если (в большинстве компаний) честных кандидатов отметают даже не пригласив на техническое собеседование?Если умение лгать является обязательным, чтобы устроиться к вам на работу, то не удивляйтесь что "сложно найти хорошего сотрудника".Я знаю о чем говорю. В нашей компании для продвижения программистов на аутсорс есть целая отдельная команда, которая полностью специализируется на "продаже сотрудников". Это люди, которые пристально изучают хотелки чсв hr-ов, пишут "идеальные" резюме и отвечают на все вопросы так, "как надо". А программист приходит только на техническое собеседование в конце.Хорошие сотрудники (как правило) не станут накручивать себе 20 лет стажа, рассказывать про мотивацию "не ради денег", отвечать на глупые вопросы про квадратные люки и прочую ерунду.Вам нужно не учить людей в интернете "как правильно отвечать на наши вопросы, чтобы вы у нас прошли собес", а мыслить шире и заниматься реальным поиском толковых специалистов, которые не обязаны иметь топовые софт-скилы.В противном случае - получайте "идеальные" резюме, написанные по единому шаблону и котов в мешке. И не забудьте пожаловаться что "сложно найти хорошего сотрудника".

Читаю я комментарии и полностью убеждаюсь в том, почему так сложно найти хорошего сотрудника. Да, работодателю неприятно, когда соискатель отключает камеру, а на заднем фоне домашние едят. Неприятно, если человек сразу говорит, что на прошлой работе одни дураки. Настораживают люди, которые каждый год меняют работу и говорят "мало платят". Называть не по имени это вообще признак из серии " Ты, ходор, на фиг не сдался". И прочее. Но большинство комментариев как раз от людей с чсв. Из серии "любите меня любого, я вам одолжение делаю тем, что общаюсь".

Источник

Оцените статью