Главная / Блог / python live coding

Задачи для подготовки
к собеседованию
по Python

Задачи для подготовки
к собеседованию
по Python

Smartiqa python programmer
  • Дата: 5 сентября 2023
  • Автор: Евгений Поваров
А ЕЩЕ У НАС ЕСТЬ КЛАССНЫЙ ЗАДАЧНИК ПО PYTHON!

1. Numbers / Числовые типы данных

Задача 1.1. Условие

Напишите программу, которая развернет число (тип int) 
Задача 1.1. Решение - IDE

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

Задача 1.2. Условие

Напишите программу, которая проверяет, является ли число числом Армстронга. 
Число Армстронга — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр. 
Пример: 3**3 + 7**3 + 1**3 = 371
Задача 1.2. Решение - IDE

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))

Задача 1.3. Условие

Напишите программу, которая проверит каждое число в списке на предмет того, является ли оно простым.
Задача 1.3. Решение - IDE

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
Задача 1.4. Условие

 Напишите программу, которая построит список чисел Фибоначчи через итеративный метод.
Числа Фибоначчи - элементы числовой последовательности, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел.
Задача 1.4. Решение - IDE

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]
Задача 1.5. Условие

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

Задача 1.5. Решение - IDE

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]
Задача 1.6. Условие

Напишите программу, которая посчитает факториал от заданного числа (через рекурсию).
Задача 1.6. Решение - IDE

def factorial(x):
    if x == 1:
        return x
    else:
        return x * factorial(x-1)

print(factorial(5))


# Результат работы
120

Задача 1.7. Условие

Напишите программу, которая проверит, является ли число палиндромом.
Задача 1.7. Решение - IDE

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
Задача 1.8. Условие

Напишите программу, которая проверит, является ли число палиндромом (итеративным способом).
Задача 1.8. Решение - IDE

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
Задача 1.9. Условие

Напишите программу, которая проверит, является ли число палиндромом (через рекурсию).
Задача 1.9. Решение - IDE

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.10. Условие

Напишите программу, которая определит наибольшее из трех целых чисел
Задача 1.10. Решение - IDE

# Вариант решения 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
Задача 1.11. Условие

Поменяйте значения двух переменных местами. 
Сделайте это двумя способами - используя и не используя третью переменную.
Задача 1.11. Решение - Интерактивный режим

>>> # 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
>>> 

Задача 1.12. Условие

Напишите программу, которая принимает на вход число и раскладывает его на простые множители. 
Разложить на простые множители — значит представить число в виде произведения простых множителей (чисел). 
Простые множители вернуть в виде списка.
Задача 1.12. Решение - IDE

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]
Задача 1.13. Условие

Напишите программу, которая проверит, что число является совершенным. 
Совершенное число - натуральное число, равное сумме всех своих собственных делителей. 
Например, число 6 равно сумме своих собственных делителей 1 + 2 + 3. 
Примеры совершенных чисел: 6, 28, 496, 8128

Задача 1.13. Решение - IDE

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
Задача 1.14. Условие

Напишите программу, которая найдет среднее арифметическое списка чисел
Задача 1.14. Решение - IDE

def average(lst):
    return sum(lst) / len(lst)

print(average([1, 5, 10, 35, 234, 1, 6, 8]))


# Результат работы
37.5
Задача 1.15. Условие

Напишите программу, которая выведет первые N простых чисел
Задача 1.15. Решение - IDE

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]
Задача 1.16. Условие

Напишите программу, которая выведет простые числа в заданном диапазоне
Задача 1.16. Решение - IDE

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]
Задача 1.17. Условие

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

Задача 1.17. Решение - IDE

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
Задача 1.18. Условие

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

Задача 1.18. Решение - IDE

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

Задача 1.19. Условие

Напишите программу, которая переведет десятичное число в двоичное.
Задача 1.19. Решение - IDE

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

Еще задачи по теме


Решаем задачи и отвечаем на вопросы по теме "Целые числа": работаем с типом данных int

Решаем задачи и отвечаем на вопросы по теме "Числа с плавающей точкой": работаем с типом данных float

2. String / Строковый тип данных

Задача 2.1. Условие

Напишите программу, которая удалит переданный символ из строки
Задача 2.1. Решение - IDE

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
Задача 2.2. Условие

Напишите программу, которая подсчитает количество вхождений подстроки в строку
Задача 2.2. Решение - IDE

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
Задача 2.3. Условие

Напишите программу, которая проверит, что две строки являются анаграммами. 
Анаграмма - слово, которые получается путем перестановки букв другого слова. 
Например: мука - > кума
Задача 2.3. Решение - IDE

def is_anagram(string1: str, string2: str):
    return sorted(string1) == sorted(string2)

print(is_anagram('night', 'thing'))
print(is_anagram('cat', 'car'))


# Результат работы
True
False
Задача 2.4. Условие

Напишите программу, которая проверит, является ли строка палиндромом
Задача 2.4. Решение - IDE

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
Задача 2.5. Условие

Напишите программу, которая найдет количество вхождений подстроки в строку. 
Подстроки могут перекрываться.
Задача 2.5. Решение - IDE

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

Еще задачи по теме


Строки в Python. Тип данных: str. Учимся выполнять основные действия над строковым типом данных в Python: создание, экранирование, конкатенация и умножение, срезы, форматирование, строковые методы.

Задачи и их решения к урокам курса «Программирование на Python». Даем соответствующие комментарии.

Строки как тип данных в Python. Основные методы и свойства строк. Примеры работы со строками, задачи с решениями.

Как вам материал?

Также может быть интересно