mrgsfl / python_lessons

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

В этом репозитории буду размещать решения задач в рамках курса "Программирование на Python": https://stepik.org/course/67

Задачи:

1)Коля каждый день ложится спать ровно в полночь и недавно узнал, что оптимальное время для его сна составляет X минут. Коля хочет поставить себе будильник так, чтобы он прозвенел ровно через X минут после полуночи, однако для этого необходимо указать время сигнала в формате часы, минуты. Помогите Коле определить, на какое время завести будильник.

Решение: alarm_task.py

2)Катя узнала, что ей для сна надо X минут. В отличие от Коли, Катя ложится спать после полуночи в H часов и M минут. Помогите Кате определить, на какое время ей поставить будильник, чтобы он прозвенел ровно через X минут после того, как она ляжет спать.

На стандартный ввод, каждое в своей строке, подаются значения X, H и M. Гарантируется, что Катя должна проснуться в тот же день, что и заснуть. Программа должна выводить время, на которое нужно поставить будильник: в первой строке часы, во второй — минуты.

Решение: alarm_task2.py

  1. Из передачи “Здоровье” Аня узнала, что рекомендуется спать хотя бы A часов в сутки, но пересыпать тоже вредно и не стоит спать более B часов. Сейчас Аня спит H часов в сутки. Если режим сна Ани удовлетворяет рекомендациям передачи “Здоровье”, выведите “Это нормально”. Если Аня спит менее A часов, выведите “Недосып”, если же более B часов, то выведите “Пересып”.

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

Решение: sleeping_time1.py

4)Требуется определить, является ли данный год високосным.

Високосными считаются те годы, порядковый номер которых либо кратен 4, но при этом не кратен 100, либо кратен 400 (например, 2000-й год являлся високосным, а 2100-й будет невисокосным годом). Программа должна корректно работать на числах 1900≤n≤3000. Выведите "Високосный" в случае, если считанный год является високосным и "Обычный" в обратном случае.

Решение: leap_year.py

5)Напишите программу, вычисляющую площадь треугольника по переданным длинам трёх его сторон по формуле Герона:

S=sqrt{p(p−a)(p−b)(p−c)}, где p=(a+b+c)/2

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

Решение: triangle_square.py

6)Напишите программу, принимающую на вход целое число, которая выводит True, если переданное значение попадает в интервал (−15,12]∪(14,17)∪[19,+∞) и False в противном случае.

Решение: interval_task.py

7)Напишите простой калькулятор, который считывает с пользовательского ввода три строки: первое число, второе число и операцию, после чего применяет операцию к введённым числам и выводит результат на экран.

Поддерживаемые операции: +, -, /, *, mod, pow, div, где mod — это взятие остатка от деления, pow — возведение в степень, div — целочисленное деление.

Если выполняется деление и второе число равно 0, необходимо выводить строку "Деление на 0!".

Решение: calculator.py

8)Требуется написать программу, на вход которой подаётся тип фигуры(треугольник/круг/прямоугольник) и соответствующие параметры, которая бы выводила площадь фигуры. Для числа πи использовать значение 3.14 .

Формат ввода:

треугольник a b c где a, b и c — длины сторон треугольника

прямоугольник a b где a и b — длины сторон прямоугольника

круг r где r — радиус окружности

Решение: shape_square.py

9)Напишите программу, которая получает на вход три целых числа, по одному числу в строке, и выводит на консоль в три строки сначала максимальное, потом минимальное, после чего оставшееся число.

На ввод могут подаваться и повторяющиеся числа.

Решение: max_min_rest.py

10)В институте биоинформатики по офису передвигается робот. Недавно студенты из группы программистов написали для него программу, по которой робот, когда заходит в комнату, считает количество программистов в ней и произносит его вслух: "n программистов".

Для того, чтобы это звучало правильно, для каждого n нужно использовать верное окончание слова.

Напишите программу, считывающую с пользовательского ввода целое число n (неотрицательное), выводящее это число в консоль вместе с правильным образом изменённым словом "программист", для того, чтобы робот мог нормально общаться с людьми, например: 1 программист, 2 программиста, 5 программистов.

В комнате может быть очень много программистов. Проверьте, что ваша программа правильно обработает все случаи, как минимум до 1000 человек.

Решение: people_amount.py

11)Написать программу, которая проверит "счастливый" ли билет по его номеру. Билет считается счастливым, если сумма первых трех цифр совпадает с суммой последних трех цифр номера билета.

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

Решение: lucky_ticket.py

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

Решение: while1.py

13)Между двумя командами устраивается соревнование. Победителям достанется большой и вкусный пирог. В командах a и b человек соответственно.

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

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

Решение: nok.py

14)Напишите программу, которая считывает целые числа с консоли по одному числу в строке.

Для каждого введённого числа проверить: если число меньше 10, то пропускаем это число; если число больше 100, то прекращаем считывать числа; в остальных случаях вывести это число обратно на консоль в отдельной строке.

Решение: break_continue.py

15)Когда Павел учился в школе, он запоминал таблицу умножения прямоугольными блоками. Для тренировок ему бы очень пригодилась программа, которая показывала бы блок таблицы умножения. Напишите программу, на вход которой даются четыре числа a, b, c и d, каждое в своей строке. Программа должна вывести фрагмент таблицы умножения для всех чисел отрезка [a; b] на все числа отрезка [c;d]. Числа a, b, c и d являются натуральными и не превосходят 10, a <= b, c <= d. Следуйте формату вывода из примера, для разделения элементов внутри строки используйте '\t' — символ табуляции. Заметьте, что левым столбцом и верхней строкой выводятся сами числа из заданных отрезков — заголовочные столбец и строка таблицы.

Решение: multiplication_table.py

16)Напишите программу, которая считывает с клавиатуры два числа a и b, считает и выводит на консоль среднее арифметическое всех чисел из отрезка [a; b], которые кратны числу 3. На вход программе подаются интервалы, внутри которых всегда есть хотя бы одно число, которое делится на 3 .

Решение: for_average.py

17)GC-состав является важной характеристикой геномных последовательностей и определяется как процентное соотношение суммы всех гуанинов и цитозинов к общему числу нуклеиновых оснований в геномной последовательности.

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

Решение: GC_percent.py

18)Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.

Кодирование осуществляется следующим образом: s = 'aaaabbсaa' преобразуется в 'a4b2с1a2', то есть группы одинаковых символов исходной строки заменяются на этот символ и количество его повторений в этой позиции строки.

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

Решение: dna_encryption.py

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

Используйте метод split строки.

Решение: string_sum.py

20)Напишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его соседей. Для элементов списка, являющихся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся список "1 3 5 6 10", то на выход ожидается список "13 6 9 15 7" (без кавычек).

Если на вход пришло только одно число, надо вывести его же.

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

Решение: neighbors_sum.py

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

Для решения задачи может пригодиться метод sort списка.

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

Решение: no_duplicates.py

22)Напишите программу, которая считывает с консоли числа (по одному в строке) до тех пор, пока сумма введённых чисел не будет равна 0 и сразу после этого выводит сумму квадратов всех считанных чисел.

Гарантируется, что в какой-то момент сумма введённых чисел окажется равной 0, после этого считывание продолжать не нужно.

Решение: total_zero.py

23)Напишите программу, которая выводит часть последовательности 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ... (число повторяется столько раз, чему равно). На вход программе передаётся неотрицательное целое число n — столько элементов последовательности должна отобразить программа. На выходе ожидается последовательность чисел, записанных через пробел в одну строку.

Решение: sequence_part.py

24)Напишите программу, которая считывает список чисел lst из первой строки и число x из второй строки, которая выводит все позиции, на которых встречается число x в переданном списке lst.

Позиции нумеруются с нуля, если число x не встречается в списке, вывести строку "Отсутствует" (без кавычек, с большой буквы).

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

Решение: number_positions.py

25)Напишите функцию f(x), которая возвращает значение следующей функции, определённой на всей числовой прямой:

1−(x+2)(x+2) при x≤−2 -х/2 при −2<x≤2 (х-2)(х-2) + 1 при 2<x

Требуется реализовать только функцию, решение не должно осуществлять операций ввода-вывода.

Решение: inequalities_function.py

  1. Напишите функцию modify_list(l), которая принимает на вход список целых чисел, удаляет из него все нечётные значения, а чётные нацело делит на два. Функция не должна ничего возвращать, требуется только изменение переданного списка

Решение: modify_list.py

27)Напишите функцию update_dictionary(d, key, value), которая принимает на вход словарь d и два числа: key и value.

Если ключ key есть в словаре d, то добавьте значение value в список, который хранится по этому ключу. Если ключа key нет в словаре, то нужно добавить значение в список по ключу 2 * key. Если и ключа 2 * key нет, то нужно добавить ключ 2 * key в словарь и сопоставить ему список из переданного элемента [value].

Требуется реализовать только эту функцию, кода вне неё не должно быть. Функция не должна вызывать внутри себя функции input и print.

Решение: update_dictionary.py

28)Когда Антон прочитал «Войну и мир», ему стало интересно, сколько слов и в каком количестве используется в этой книге. Помогите Антону написать упрощённую версию такой программы, которая сможет подсчитать слова, разделённые пробелом и вывести получившуюся статистику.

Программа должна считывать одну строку со стандартного ввода и выводить для каждого уникального слова в этой строке число его повторений (без учёта регистра) в формате "слово количество". Порядок вывода слов может быть произвольным, каждое уникальное слово должно выводиться только один раз.

Решение: unique_words_amount.py

29)Напишите программу, которая считывает строку с числом n, которое задаёт количество чисел, которые нужно считать. Далее считывает n строк с числами x_i, по одному числу в каждой строке. Итого будет n+1 строк. При считывании числа x_i программа должна на отдельной строке вывести значение f(x_i). Функция f(x) уже реализована и доступна для вызова.

Функция вычисляется достаточно долго и зависит только от переданного аргумента x. Для того, чтобы уложиться в ограничение по времени, нужно избежать повторного вычисления значений.

Решение: function_call.py

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

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

В исходном тексте не встречаются цифры, так что код однозначно интерпретируем.

Решение: string_decryption.py Входные данные: dataset_3363_2.txt Выходные данные: output.txt

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

Решение: the_most_common_word.py Входные данные: dataset_3363_3.txt Выходные данные: output.txt

About


Languages

Language:Python 100.0%