Напишите программу, которая развернет число (тип int)
def revert_int_option_1(num):
print('Option 1: Use reversed() method')
return int(''.join(list(reversed(str(num)))))
def revert_int_option_2(num):
print('Option 2: Use slices')
return int(str(num)[::-1])
print(revert_int_option_1(12345))
print(revert_int_option_2(12345))
# Результат работы
Option 1: Use reversed() method
54321
Option 2: Use slices
54321
Напишите программу, которая проверяет, является ли число числом Армстронга.
Число Армстронга — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр.
Пример: 3**3 + 7**3 + 1**3 = 371
def armstrong_number(num):
sum = 0
length = len(str(num))
for digit in list(str(num)):
sum += int(digit)**length
return sum == num
# Результат работы
print(armstrong_number(371))
Напишите программу, которая проверит каждое число в списке на предмет того, является ли оно простым.
def prime_num(num):
for div_num in range(2, num):
if num % div_num == 0:
return False
return True
for item in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
print(f"{item}: {prime_num(item)}")
# Результат работы
1: True
2: True
3: True
4: False
5: True
6: False
7: True
8: False
9: False
10: False
11: True
12: False
13: True
14: False
Напишите программу, которая построит список чисел Фибоначчи через итеративный метод.
Числа Фибоначчи - элементы числовой последовательности, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел.
def fibonacci(length):
lst = [0, 1]
for item, index in enumerate(range(2, length)):
lst.append(lst[index-2] + lst[index-1])
return lst
print(fibonacci(14))
# Результат работы
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]
Напишите программу, которая построит список чисел Фибоначчи через рекурсию.
Числа Фибоначчи - элементы числовой последовательности, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел.
def fibonacci(length):
lst = [0, 1]
return calculate_next(lst, length)
def calculate_next(lst, length):
if len(lst) < length:
lst.append(lst[-2] + lst[-1])
return calculate_next(lst, length)
else:
return lst
print(fibonacci(14))
# Результат работы
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]
Напишите программу, которая посчитает факториал от заданного числа (через рекурсию).
def factorial(x):
if x == 1:
return x
else:
return x * factorial(x-1)
print(factorial(5))
# Результат работы
120
Напишите программу, которая проверит, является ли число палиндромом.
def prime_num(num):
for div_num in range(2, num):
if num % div_num == 0:
return False
return True
for item in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
print(f"{item}: {prime_num(item)}")
# Результат работы
1: True
2: True
3: True
4: False
5: True
6: False
7: True
8: False
9: False
10: False
11: True
12: False
13: True
14: False
Напишите программу, которая проверит, является ли число палиндромом (итеративным способом).
def is_palindrome(num):
str_num = str(num)
median = len(str_num)//2
for index in range(0, median):
if str_num[index] != str_num[len(str_num)-index-1]:
return False
return True
print(is_palindrome(54321))
print(is_palindrome(543821))
print(is_palindrome(5346435))
print(is_palindrome(53466435))
# Результат работы
False
False
True
True
Напишите программу, которая проверит, является ли число палиндромом (через рекурсию).
def is_palindrome(num):
str_num = str(num)
median = len(str_num)//2
return check_equalness(str_num, 0, median)
def check_equalness(num, index, median):
if index >= median:
return True
else:
if num[index] != num[len(num)-index-1]:
return False
return check_equalness(num, index+1, median)
print(is_palindrome(54321))
print(is_palindrome(543821))
print(is_palindrome(5346435))
print(is_palindrome(53466435))
# Результат работы
False
False
True
True
Напишите программу, которая определит наибольшее из трех целых чисел
# Вариант решения 1
def max(a, b, c):
if a > b:
return a if a > c else c
else:
return b if b > c else c
# Вариант решения 2
def max(a, b, c):
lst = [a, b, c]
lst.sort(reverse=True)
return lst[0]
# Тесты
print(max(1, 2, 3))
print(max(3, 2, 1))
print(max(1, 3, 2))
print(max(1, 1, 1))
# Результат работы
False
False
True
True
3
3
3
1
Поменяйте значения двух переменных местами.
Сделайте это двумя способами - используя и не используя третью переменную.
>>> # Option 1 (no third var)
>>> a = 0
>>> b = 1
>>> a
0
>>> b
1
>>> a, b = b, a
>>> a
1
>>> b
0
>>> # Option 2 (using third var)
>>> a = 0
>>> b = 1
>>> a
0
>>> b
1
>>> c = a
>>> a = b
>>> b = c
>>> a
1
>>> b
0
>>>
Напишите программу, которая принимает на вход число и раскладывает его на простые множители.
Разложить на простые множители — значит представить число в виде произведения простых множителей (чисел).
Простые множители вернуть в виде списка.
def factorize(num):
left_portion = num
factors = []
index = 2
while left_portion != 1:
while left_portion % index == 0:
factors.append(index)
left_portion = left_portion / index
index += 1
return factors
print(factorize(5))
print(factorize(52))
print(factorize(63))
print(factorize(128))
# Результат работы
[5]
[2, 2, 13]
[3, 3, 7]
[2, 2, 2, 2, 2, 2, 2]
Напишите программу, которая проверит, что число является совершенным.
Совершенное число - натуральное число, равное сумме всех своих собственных делителей.
Например, число 6 равно сумме своих собственных делителей 1 + 2 + 3.
Примеры совершенных чисел: 6, 28, 496, 8128
def get_divisors(num):
divisors = []
for i in range(1, num):
if num % i == 0:
divisors.append(i)
return divisors
def perfect_num(num):
divisors = get_divisors(num)
return num == sum(divisors)
print(perfect_num(6))
print(perfect_num(28))
print(perfect_num(496))
print(perfect_num(8128))
# Результат работы
True
True
True
True
Напишите программу, которая найдет среднее арифметическое списка чисел
def average(lst):
return sum(lst) / len(lst)
print(average([1, 5, 10, 35, 234, 1, 6, 8]))
# Результат работы
37.5
Напишите программу, которая выведет первые N простых чисел
def simple(num):
for i in range(2, num):
if num % i == 0:
return False
return True
n = 10
simple_numbers = [1]
index = 1
while len(simple_numbers) < 10:
index += 1
if simple(index):
simple_numbers.append(index)
print(simple_numbers)
# Результат работы
[1, 2, 3, 5, 7, 11, 13, 17, 19, 23]
Напишите программу, которая выведет простые числа в заданном диапазоне
def simple(num):
for i in range(2, num):
if num % i == 0:
return False
return True
start = 5
end = 50
simple_numbers = [1] if start == 1 else []
index = start
for index in range(start, end):
if simple(index):
simple_numbers.append(index)
print(simple_numbers)
# Результат работы
[5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
Напишите программу, которая найдет наименьшее общее кратное двух чисел.
Наименьшее общее кратное двух чисел - это наименьшее натуральное число, которое делится без остатка на оба числа.
def less_comm_multiple(a, b):
index = 2
while True:
if index % a == 0 and index % b == 0:
return index
index += 1
print(less_comm_multiple(5, 7))
print(less_comm_multiple(10, 3))
# Результат работы
35
30
Напишите программу, которая найдет наибольший общий делитель двух чисел.
Наибольший общий делитель - это наибольшее число, на которое числа делятся без остатка
def divisors(num):
lst = [1]
for i in range(2, num+1):
if num % i == 0:
lst.append(i)
return lst
def greatest_common_divisor(a, b):
common = set(divisors(a)) & set(divisors(b))
return max(common)
print(greatest_common_divisor(4, 16))
print(greatest_common_divisor(13, 48))
print(greatest_common_divisor(15, 70))
# Результат работы
4
1
5
Напишите программу, которая переведет десятичное число в двоичное.
def decimal_to_binary(decimal):
binary_lst = []
while True:
binary_lst.append(str(decimal % 2))
if decimal <= 1:
return ''.join(reversed(binary_lst))
decimal //= 2
print(decimal_to_binary(8))
print(decimal_to_binary(10))
# Результат работы
1000
1010
Напишите программу, которая удалит переданный символ из строки
def remove_sym(string: str, symbol: str):
return string.replace(symbol, '')
print(remove_sym('This is my text', ' '))
print(remove_sym('This is my text', 's'))
# Результат работы
Thisismytext
Thi i my text
Напишите программу, которая подсчитает количество вхождений подстроки в строку
def count_str(string: str, substring: str):
return string.count(substring)
print(count_str('This is my text', ' '))
print(count_str('This is my text', 'is'))
# Результат работы
3
2
Напишите программу, которая проверит, что две строки являются анаграммами.
Анаграмма - слово, которые получается путем перестановки букв другого слова.
Например: мука - > кума
def is_anagram(string1: str, string2: str):
return sorted(string1) == sorted(string2)
print(is_anagram('night', 'thing'))
print(is_anagram('cat', 'car'))
# Результат работы
True
False
Напишите программу, которая проверит, является ли строка палиндромом
def is_palindrome(string: str):
prepared_str = string.lower().replace(' ', '')
return prepared_str == prepared_str[::-1]
print(is_palindrome('A man a plan a canal Panama'))
print(is_palindrome('This is ordinary text'))
# Результат работы
True
False
Напишите программу, которая найдет количество вхождений подстроки в строку.
Подстроки могут перекрываться.
import regex as re
def count_substr(string: str, substring: str):
regex = f'({substring})'
match = re.findall(regex, string, overlapped=True)
return len(match)
print(count_substr('Please take a piece of cake', 'ke'))
print(count_substr('AAAbbbbbAAAA', 'AA'))
# Результат работы
2
5