Python. Функции

Лабораторная работа по теме «Python. Функции»

  1. Чтобы из трех отрезков можно было составить треугольник, необходимо и достаточно, чтобы сумма длин любых двух отрезков была строго больше третьего.
    Напишите функцию triangle(a, b, c), которая принимает на вход три длины отрезков и определяет, можно ли из этих отрезков составить треугольник. Ваша функция должна печатать «Можно», если составить треугольник можно, и «Нельзя», если нельзя.

  1. Правильной скобочной последовательностью называется строка, состоящая только из символов «скобки» – открывающих «(» и закрывающих «)», –   где каждой закрывающей скобке найдётся соответствующая открывающая. Например, () и (()()) — правильные последовательности, а (()(() или )( — нет.
    Напишите функцию bracket_check(test_string), которая проверяет, является ли поступившая на вход строка правильной скобочной последовательностью. Если да, она должна печатать «Является», в противном случае — «Нет». Обратите внимание, что пустая строка также является правильной скобочной последовательностью.
  2. Напишите функцию, которая принимает номер месяца и язык (русский или английский), а возвращает его название.
    Примеры
    print(month_name(3, «en»))   # march
    print(month_name(3, «ru»))   # март
  3. Вам дана строка, содержащая координату клетки на шахматном поле (например, «A2»).
    Напишите функцию possible_turns(cell), которая будет по такой строке возвращать список координат (в такой же текстовой форме) всех клеток, на которые может попасть конь с указанной клетки за один ход. Не забудьте, что за пределы шахматного поля коню ходить нельзя.
    Рекомендация: Сделайте две вспомогательные функции, которые будут по строке делать целочисленные координаты и наоборот. Например, клетке «A2» можно сопоставить кортеж (1,2), а кортежу (8,8) — клетку «H8». То есть, одна функция принимает строку, а возвращает кортеж из двух чисел. Другая функция принимает кортеж, возвращает строку.
    Также полезно сделать функцию, которая по кортежу целочисленных координат сообщает, находится ли это клетка внутри шахматного поля или снаружи.
    Примеры
    print(possible_turns(«B1»))   #[‘A3’, ‘C3’, ‘D2’]
    print(possible_turns(«H8»))   #[‘F7’, ‘G6’]
  4. Из-за плохой связи на мобильный телефон Василия приходят одни и те же смски по несколько раз. Он попросил вас написать небольшую функцию, которая будет работать почти как обычный 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(«Ага, жду»)
    Вывод
    Привет
    Не могу до тебя дозвониться
    Когда доедешь до дома
    Ага, жду
  5. Приведите пример, когда
    value = value + addition
    и
    value += addition
    дают одинаковый результат и когда разный.
    В чем будут отличия, и как их пронаблюдать?
    Напишите код, который их продемонстрирует.
  6. Напишите функцию from_string_to_list(string, container), которая принимает два аргумента: строку string, состоящую из целых чисел, написанных через пробел, и список container. Функция должна извлечь из строки числа и добавить их в конец списка.

Пример 1

Ввод Вывод
a = [1, 2, 3]from_string_to_list(«1 3 99 52», a)print(*a) 1 2 3 1 3 99 52

Пример 2

Ввод Вывод
a = [77, ‘abc’]from_string_to_list(«», a)print(*a)

 

  1. Напишите функцию transpose(matrix), которая принимает матрицу N × M (т.е. список из N списков-строк по M элементов каждый) и транспонирует её, т.е. превращает строки в столбцы и наоборот.

i-ая строка при этом превращается в i-й столбец.

Пример 1

Ввод Вывод
matrix = [[1]]transpose(matrix)for line in matrix:    print(*line) 1

Пример 2

Ввод Вывод
matrix = [[1, 2], [3, 4]]transpose(matrix)for line in matrix:    print(*line) 1 32 4

 

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

Напишите функцию find_farthest_orbit(list_of_orbits), которая среди списка орбит планет найдет ту, по которой вращается самая далёкая планета. Круговые орбиты не учитывайте: вы знаете, что у вашей звезды таких планет нет, зато искусственные спутники были запущены на круговые орбиты.

Результатом функции должен быть кортеж, содержащий длины полуосей эллипса орбиты самой далёкой планеты.

Каждая орбита представляет из себя кортеж из пары чисел – полуосей её эллипса. Площадь эллипса вычисляется по формуле S = πab, где a и b – длины полуосей эллипса.

При решении задачи используйте списочные выражения.

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

Гарантируется, что самая далёкая планета ровно одна.

Пример

Ввод Вывод
orbits = [(1, 3), (2.5, 10), (7, 2), (6, 6), (4, 3)]

print(*find_farthest_orbit(orbits))

2.5 10

 

  1. Напишите функцию same_by(characteristic, objects), которая проверяет, все ли объекты имеют одинаковое значение некоторой характеристики, и возвращает True, если это так. Если значение характеристики для разных объектов отличается – то False. Для пустого набора объектов, функция должна возвращать True. Аргумент characteristic – это функция, которая принимает объект и вычисляет его характеристику.

Пример 1

Ввод Вывод
values = [0, 2, 10, 6]if same_by(lambda x: x % 2, values):    print(‘same’)else:    print(‘different’) same

Пример 2

Ввод Вывод
values = [1, 2, 3, 4]if same_by(lambda x: x % 2, values):    print(‘same’)else:    print(‘different’) different

 

Ответ:

 

def same_by(characteristic, objects):    return len(set(map(characteristic, objects))) < 2

 

  1. С клавиатуры вводится строка из разделённых пробелами слов. Выведите на экран в строку, разделённую пробелами, список слов, отсортированных в лексикографическом порядке.

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

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

Пример

Ввод Вывод
cats dog CAT DOGGY monkey CAT cats dog DOGGY monkey

 

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

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

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

Помогите Васе справиться с поставленной задачей.

Формат ввода

Последовательность натуральных чисел, каждое на отдельной строке.

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

Вещественное число. Никаких округлений производить не надо. В случае, если никаких данных не поступало, следует вывести -1

Пример 1

Ввод Вывод
130127131 129.33333333333334

Пример 2

Ввод Вывод
-1

 

  1. Словесной гематрией называется сумма номеров (кодов, числовых значений) входящих в слово букв.

На вход программы поступает список английских слов. На одной строке записано одно слово, количество слов неизвестно.

Для вычисления гематрии поступим следующим образом:

  1. Переведём слово в верхний регистр.
  2. Числовое значение буквы вычислим как КодБуквы — КодБуквыA+ 1

Выведите полученные слова в порядке возрастания их гематрии. Если для каких-то слов гематрия совпадает, то их выводите в алфавитном порядке.

Формат ввода

Набор слов на английском языке, каждое слово на отдельной строке.

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

Набор слов в требуемом порядке.

Пример 1

Ввод Вывод
motherDaddysIster DaddymothersIster

Пример 2

Ввод Вывод
bBbaaaaaaword aaaaaabBbword
Поделиться:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • StumbleUpon
  • Technorati
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.