Education 1.1 Help

Задачи

Задача 1

Напишите две функции circle_length(radius) и circle_area(radius), принимающие радиус окружности и возвращающие длину этой окружности и площадь круга соответственно. Также напишите функцию main(), которая спрашивает у пользователя радиус окружности, а затем при помощи функций circle_length(radius) и circle_area(radius) выводит на экран длину и площадь круга, разделённые пробелом.

Учтите, что радиус окружности – это вещественное число.

Число π взять равным 3.14159.

Пример 1

Ввод

print(circle_length(5))

Вывод

31.4159

Пример 2

Ввод

print(circle_area(10))

Вывод

314.159

Задача 2

Напишите две функции larger_root(p, q) и smaller_root(p, q), которые возвращают больший и меньший корни приведённого квадратного уравнения x2 + px + q = 0. В качестве аргументов функции должны принимать коэффициенты p и q. Считать, что дискриминант неотрицателен.

Также сделайте функцию discriminant(a, b, c), которая вычисляет и возвращает дискриминант квадратного уравнения, записанного в общем виде: ax2 + bx + c = 0.

Функции вычисления корней должны использовать функцию вычисления дискриминанта.

Наконец, сделайте функцию main(), которая запрашивает у пользователя два вещественных числа p и q, и в ответ печатает на первой строке дискриминант уравнения x2 + px + q = 0, на второй строке – меньший и больший корни. Она должна выводить оба корня, даже если они совпадают.

Формат ввода

Ввод функции main()

-2.5 1

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

Вывод функции main():

2.25 0.5 2.0

Пример 1

Ввод

print(smaller_root(2, 1))

Вывод

-1.0

Пример 2

Ввод

print(larger_root(2, 1))

Вывод

-1

Задача 3

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

Чтобы телефон эти изменения в распечатке смсок принял, ваш друг настроил его так, что вам достаточно написать функцию print_without_duplicates(message). Напишите её.

Пример

Ввод

print_without_duplicates("Привет") print_without_duplicates("Не могу до тебя дозвониться") print_without_duplicates("Не могу до тебя дозвониться") print_without_duplicates("Не могу до тебя дозвониться") print_without_duplicates("Когда доедешь до дома") print_without_duplicates("Ага, жду") print_without_duplicates("Ага, жду")

Вывод

Привет Не могу до тебя дозвониться Когда доедешь до дома Ага, жду

Задача 4

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

По правилам оформления документов в каждом чеке вы должны напечатать сначала номер чека (нумерация начинается с единицы) и число товаров, затем список товаров с ценами и в конце — итоговую стоимость. Из-за того, что вы не знаете число товаров, пока кассир не «пробьет» последний товар, нельзя печатать чек по мере ввода товаров. Приходится сначала добавить все необходимые товары и только затем печатать весь чек целиком. В конце чека печатается черта (состоящая из пяти знаков минус), по которой он отрывается от ленты.

Организуйте две функции: add_item(item_name, item_cost) и print_receipt(), которые реализуют указанный функционал. Форматирование сделайте по шаблону в примере.

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

Пример

Ввод

add_item('Блокнот', 100) print_receipt() add_item('Ручка', 70) print_receipt() print_receipt() add_item('Булочка', 15) add_item('Булочка', 15) add_item('Чай', 5) print_receipt() add_item('Булочка', 15) add_item('Булочка', 15) # (Отменить чек) - этот чек не печатаем

Вывод

Чек 1. Всего предметов: 1 Блокнот - 100 Итого: 100 ----- Чек 2. Всего предметов: 1 Ручка - 70 Итого: 70 ----- Чек 3. Всего предметов: 3 Булочка - 15 Булочка - 15 Чай - 5 Итого: 35 -----

Задача 5

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

Помогите Алисе автоматизировать процесс написания приглашений. Напишите три функции: add_friends(), are_friends() и print_friends().

Функция add_friends(name_of_person, list_of_friends) принимает на вход два аргумента: имя человека и список имен его друзей.

Функция are_friends(name_of_person1, name_of_person2) принимает на вход два аргумента: имя первого человека и имя второго человека и возвращает True или False, в зависимости от того, считает ли первый человек второго своим другом.

А функция print_friends(name_of_person) принимает на вход имя человека и печатает список его друзей через пробел в алфавитном порядке.

Пример

Ввод

add_friends("Алла", ["Марина", "Иван"]) print(are_friends("Алла", "Мария")) add_friends("Алла", ["Мария"]) print(are_friends("Алла", "Мария"))

Вывод

False True

Задача 6

В письменности языка НРЗБРЧВ отсутствуют гласные буквы и знаки препинания, в остальном язык ничем не отличается от русского языка. Чтобы из слова русского языка получить слово языка НРЗБРЧВ, достаточно выкинуть из слова все гласные. Чтобы перевести предложение, нужно перевести каждое слово и выкинуть знаки препинания. Регистр букв следует оставить неизменным.

Напишите функцию translate(text), которая переводит текст с русского языка на НРЗБРЧВ. Свой результат функция должна записать во внешнюю переменную translated_text.

Формат ввода

translated_text = None translate("Удивительный факт, но текст на языке НЕРАЗБОРЧИВО оказывается довольно просто читать. Достаточно небольшой тренировки - и вы сможете это делать.")

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

translated_text == "двтльнй фкт н ткст н зк НРЗБРЧВ кзвтс двльн прст чтть Дсттчн нбльшй трнрвк в смжт т длть"

Задача 7

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

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

print_application_for_leave("Иван Петров", "1 июня – 20 июня") print_holiday_money_claim("Иван Петров", "15 тысяч пиастров") print_attorney_letter("Иван Петров", "1 июня – 20 июня", "Василий Васильев")

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

Вы сошлись на том, что теперь отделу кадров придется заполнять данные, вызывая функции языка Python с правильными параметрами. Одна функция — setup_profile(name, vacation_dates) — предназначена для того, чтобы задать всю информацию про работника. А ещё несколько функций пользуются установленными значениями, чтобы оформить документы на отпуск: заявление на отпуск print_application_for_leave(), заявление на выплату отпускных print_holiday_money_claim(amount), и доверенность на передачу своих служебных полномочий заместителю print_attorney_letter(to_whom).

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

Пример

Ввод

setup_profile("Иван Петров", "1 июня – 20 июня") print_application_for_leave() print_application_for_leave() print_holiday_money_claim("15 тысяч пиастров") print_attorney_letter("Василий Васильев")

Вывод

Заявление на отпуск в период 1 июня – 20 июня. Иван Петров Заявление на отпуск в период 1 июня – 20 июня. Иван Петров Прошу выплатить 15 тысяч пиастров отпускных денег. Иван Петров На время отпуска в период 1 июня – 20 июня моим заместителем назначается Василий Васильев. Иван Петров

Задача 8

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

Пример

Ввод

print_only_new('Шутка номер 15') print_only_new('Шутка номер 23') print_only_new('Шутка номер 24') print_only_new('Шутка номер 24') print_only_new('Шутка номер 100') print_only_new('Шутка номер 24') print_only_new('Шутка номер 99') print_only_new('Шутка номер 15') print_only_new('Шутка номер 100')

Вывод

Шутка номер 15 Шутка номер 23 Шутка номер 24 Шутка номер 100 Шутка номер 99

Задача 9

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

Напишите функцию hello(name), которая принимает на вход имя пациента, приветствует его и сообщает, что его медицинскую карту ищут.

Для поиска медицинской карты напишите функцию search_card(name), которая тоже принимает на вход имя пациента. Эта функция выводит информацию о номере карточки пациента или о том, что она не найдена. Список имён пациентов, пронумерованный с 1, находится в списке base, который является глобальным. Номер пациента соответствует номеру карты.

Пример

Ввод

base = ["Иван", "Юлия Иванкова"] hello("Иван") search_card("Иван") hello("Юлия Иванова") search_card("Юлия Иванова")

Вывод

Здравствуйте, Иван! Вашу карту ищут... Ваша карта с номером 1 найдена Здравствуйте, Юлия Иванова! Вашу карту ищут... Ваша карта не найдена
Last modified: 12 June 2024