Функции
.docxНапишите функцию, которая принимает на вход число n и возвращает список всех делителей этого числа
Для решения задачи, мы можем написать функцию, которая принимает число n и возвращает список всех его делителей. Делители числа — это такие числа, на которые делится заданное число без остатка.
Для каждого числа от 1 до n проверяем, является ли оно делителем n.
Если остаток от деления n на это число равен 0, то добавляем его в список делителей.
Возвращаем список делителей.
def find_divisors(n):
divisors = []
for i in range(1, n + 1): # Перебираем все числа от 1 до n
if n % i == 0: # Если остаток от деления 0, значит i — делитель n
divisors.append(i)
return divisors
# Пример использования функции
n = int(input("Введите число: "))
result = find_divisors(n)
print(f"Делители числа {n}: {result}")
Результат:
Делители числа 12: [1, 2, 3, 4, 6, 12]
Напишите функцию, которая принимает на вход число и возвращает True, если оно является числом Армстронга, и False в противном случае. (Число Армстронга - это число, которое равно сумме своих цифр, возведенных в степень, равную количеству цифр в числе).
def is_armstrong_number(n):
# Преобразуем число в строку, чтобы легко перебрать его цифры
digits = str(n)
num_digits = len(digits)
# Вычисляем сумму цифр, возведенных в степень num_digits
sum_of_powers = sum(int(digit) ** num_digits for digit in digits)
# Проверяем, равно ли число сумме
return sum_of_powers == n
# Пример использования функции
n = int(input("Введите число: "))
if is_armstrong_number(n):
print(f"{n} является числом Армстронга.")
else:
print(f"{n} не является числом Армстронга.")
Напишите функцию, которая принимает на вход список чисел и возвращает список, содержащий только четные числа.
def get_even_numbers(lst):
# Создаем новый список, в который добавляются только четные числа
even_numbers = [num for num in lst if num % 2 == 0]
return even_numbers
# Пример использования функции
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = get_even_numbers(numbers)
print(f"Четные числа: {result}")
Ввод numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Вывод Четные числа: [2, 4, 6, 8, 10]
6. Напишите функцию, которая принимает на вход список строк и возвращает список строк, в которых содержится подстрока "python".
def filter_strings_by_substring(lst):
# Создаем новый список с строками, содержащими подстроку "python"
filtered_strings = [s for s in lst if 'python' in s.lower()]
return filtered_strings
# Пример использования функции
strings = ["I love Python", "This is a test", "Python is great", "Learning Java", "python is fun"]
result = filter_strings_by_substring(strings)
print(f"Строки, содержащие 'python': {result}")
strings = ["I love Python", "This is a test", "Python is great", "Learning Java", "python is fun"]
Строки, содержащие 'python': ['I love Python', 'Python is great', 'python is fun']
7. Напишите функцию, которая принимает на вход список стран и возвращает список, содержащий только страны, которые начинаются на букву К
def countries_starting_with_K(lst):
# Создаем новый список с странами, начинающимися на букву 'К'
k_countries = [country for country in lst if country.lower().startswith('к')]
return k_countries
# Пример использования функции
countries = ["Канада", "Россия", "Китай", "Испания", "Кения", "Франция"]
result = countries_starting_with_K(countries)
print(f"Страны, начинающиеся на букву 'К': {result}")
Ввод countries = ["Канада", "Россия", "Китай", "Испания", "Кения", "Франция"]
Вывод Страны, начинающиеся на букву 'К': ['Канада', 'Китай', 'Кения']
8. Напишите функцию, которая принимает на вход количество вирусных клеток и время в минутах, и возвращает сколько вирусных клеток будет по истечении указанного времени. Вирусная клетка, выделяет 4 новых бактерии в минуту. каждые 100 бактерий объединяются в новую вирусную клетку, которая также выделяет 4 новых бактерии в минуту
def viral_cells_advanced(initial_cells, time, max_cells=1000, incubation_time=2):
# Начальное количество вирусных клеток
virus_cells = initial_cells
# Начальное количество бактерий
bacteria = 0
# Время инкубации (сколько минут новая вирусная клетка не выделяет бактерии)
virus_cell_ages = [0] * initial_cells # Список возрастов вирусных клеток
for minute in range(1, time + 1):
# Каждая вирусная клетка выделяет 4 бактерии, если она "взрослая"
for i in range(virus_cells):
if virus_cell_ages[i] >= incubation_time:
bacteria += 4
# Поглощение бактерий вирусными клетками, если их много
if bacteria > 1000:
bacteria -= 100 # Каждая вирусная клетка может поглотить до 100 бактерий
if bacteria < 0:
bacteria = 0
# Каждые 100 бактерий превращаются в 1 новую вирусную клетку
new_virus_cells = bacteria // 100
bacteria %= 100 # Оставшиеся бактерии после формирования вирусных клеток
# Ограничиваем количество вирусных клеток
if virus_cells + new_virus_cells > max_cells:
new_virus_cells = max_cells - virus_cells
virus_cells += new_virus_cells
# Обновляем возраст каждой вирусной клетки
for i in range(virus_cells - new_virus_cells, virus_cells):
if virus_cell_ages[i] < incubation_time:
virus_cell_ages[i] += 1
# После каждой минуты, вирусные клетки начинают работать над бактериями
print(f"Минут {minute}: Вирусных клеток: {virus_cells}, Бактерий: {bacteria}")
return virus_cells
# Пример использования функции
initial_cells = int(input("Введите начальное количество вирусных клеток: "))
time = int(input("Введите время в минутах: "))
result = viral_cells_advanced(initial_cells, time)
print(f"Количество вирусных клеток через {time} минут: {result}")
