Функции. С возвратом значения. Часть 1

 Функция с возвратом значения

 Функция do_something() определена следующим образом:

def do_something(number):
    return number * 2

 Что будет выведено в результате выполнения следующего кода?:

print(do_something(10))

 Ответ:  20

 Функция do_something() определена следующим образом:

def do_something(numbers):
    result = 1
    for i in numbers:
        result *= i    
    return result

 Что будет выведено в результате выполнения следующего кода?:

print(do_something([2, 2, 2, 2]))

 Ответ:  16

 Функция get_sum() определена следующим образом:

def get_sum(x, y, z):
    return x + y + z
    print('Сумма равна', x + y + z)

 Что будет выведено в результате выполнения следующего кода?:

print(get_sum(1, 2, 3))

 Ответ:  6

 Напишите функцию convert_to_miles(km), которая принимает в качестве аргумента расстояние в километрах и возвращает расстояние в милях. Формула для преобразования: мили = километры * 0.6214.

def convert_to_miles(km):
    return km * 0.6214

# считываем данные
num = int(input())

# вызываем функцию
print(convert_to_miles(num))

 Напишите функцию get_days(month), которая принимает в качестве аргумента номер месяца и возвращает количество дней в данном месяце.

def get_days(month):
    if month in [1, 3, 5, 7, 8, 10, 12]:
        return 31
    elif month in [4, 6, 9, 11]:
        return 30
    else:
        return 28
# считываем данные
num = int(input())

# вызываем функцию
print(get_days(num))

 Напишите функцию get_factors(num), принимающую в качестве аргумента натуральное число и возвращающую список всех делителей данного числа.

def get_factors(num):
    s = []
    for i in range(1, num + 1):
        if num % i == 0:
            s.append(i)
    return s
# считываем данные n = int(input()) # вызываем функцию print(get_factors(n))

 Напишите функцию number_of_factors(num), принимающую в качестве аргумента число и возвращающую количество делителей данного числа.

def get_factors(num):
    s = []
    for i in range(1, num + 1):
        if num % i == 0:
            s.append(i)
    return s

def number_of_factors(num):
    return len(get_factors(num))

# считываем данные
n = int(input())

# вызываем функцию
print(number_of_factors(n))

 Строковый метод find('a') возвращает местоположение первого вхождения символа a в строке. Проблема заключается в том, что данный метод не находит местоположение всех символов а. Напишите функцию с именем find_all(target, symbol), которая принимает два аргумента: строку target и символ symbol и возвращает список, содержащий все местоположения этого символа в строке.

def find_all(target, symbol):
    s = []
    for i in range(len(target)):
        if symbol in target[i]:
            s.append(i)
    return s
# считываем данные
s = input()
char = input()

# вызываем функцию
print(find_all(s, char))

 Напишите функцию merge(list1, list2), которая принимает в качестве аргументов два отсортированных по возрастанию списка, состоящих из целых чисел, и объединяет их в один отсортированный список.

def merge(list1, list2):
    s = list1 + list2
    s.sort()
    return s

# считываем данные
numbers_1 = [int(c) for c in input().split()]
numbers_2 = [int(c) for c in input().split()]

# вызываем функцию
print(merge(numbers_1, numbers_2))

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

def quick_merge(list1, list2):
    result = []

    p1 = 0  #  list1
    p2 = 0  #  list2

    while p1 < len(list1) and p2 < len(list2):  
        if list1[p1] <= list2[p2]:
            result.append(list1[p1])
            p1 += 1
        else:
            result.append(list2[p2])
            p2 += 1

    if p1 < len(list1):   
        result += list1[p1:]
    else:                 
        result += list2[p2:]

    return result

# принимаем кол-во строк
n = int(input())

res = [int(num) for num in input().split()]

for _ in range(n - 1):
    cur_list = [int(num) for num in input().split()]

    res = quick_merge(res, cur_list)

# выводим результирующий список
print(*res)