Переменная – это именованная область памяти для хранения данных. В Python переменные создаются динамически, а их тип определяется автоматически при присваивании.
Например, x = 5 создаёт переменную x со значением 5 (тип int). Переменные можно переопределять и использовать в вычислениях.
Вопрос 1: Что такое переменная в Python?
Вопрос 2: Что выведет код: x = 5; print(x)?
Напиши код, который создаёт переменную, выводит её значение, затем изменяет значение и снова выводит её.
x = 5
print("Начальное значение:", x)
x = 10
print("Новое значение:", x)
Условие: Даны массив чисел nums и целевое число target. Напишите функцию twoSum(nums, target), которая возвращает индексы двух чисел, сумма которых равна target.
Небольшая ошибка специально оставлена в коде – найдите и исправьте её.
def twoSum(nums, target):
for i in range(len(nums)):
for j in range(i+1, len(nums)): # Ошибка: пропущен двоеточие
if nums[i] + nums[j] == target:
return [i, j]
return []
print(twoSum([2,7,11,15], 9))
Список – это изменяемая упорядоченная коллекция элементов. Списки позволяют хранить наборы данных, обрабатывать их, сортировать, фильтровать и многое другое.
Пример создания списка: my_list = [1, 2, 3]. Для добавления элемента используется метод append().
Вопрос 1: Какой тип данных представляет список?
Вопрос 2: Какой метод используется для добавления элемента в список?
Создай список из чисел, добавь в него новый элемент и выведи итоговый список.
my_list = [1, 2, 3]
my_list.append(4)
print(my_list)
Условие: Даны массив nums и значение val. Удалите все вхождения val из массива (на месте) и верните новую длину массива.
Небольшая ошибка оставлена в коде – найдите и исправьте её.
def removeElement(nums, val):
i = 0
for num in nums:
if num != val # Ошибка: пропущен двоеточие
nums[i] = num
i += 1
return i
print(removeElement([3,2,2,3], 3))
Условные операторы (if, elif и else) позволяют выполнять разные блоки кода в зависимости от истинности выражения.
Пример:
age = 20
if age >= 18:
print("Adult")
else:
print("Minor")
Такая конструкция позволяет управлять потоком выполнения программы.
Вопрос 1: Какая конструкция используется для проверки условия?
Вопрос 2: Какой блок выполнится, если условие в if ложно?
Напиши условие, которое проверяет, является ли число положительным, отрицательным или равным нулю.
num = 0
if num > 0:
print("Положительное")
elif num < 0:
print("Отрицательное")
else:
print("Ноль")
Условие: Напишите функцию fizzBuzz(n), которая возвращает список строк с результатом для чисел от 1 до n по правилу: для кратных 3 – "Fizz", для кратных 5 – "Buzz", для кратных и 3, и 5 – "FizzBuzz", иначе само число в виде строки.
Обратите внимание на небольшую ошибку в коде.
def fizzBuzz(n):
result = []
for i in range(1, n+1):
if i % 3 == 0 and i % 5 == 0:
result.append("FizzBuzz")
elif i % 3 == 0:
result.append("Fizz")
elif i % 5 == 0:
result.append("Buzz")
else:
result.append(str(i))
return result
print(fizzBuzz(15))
Циклы позволяют повторять блоки кода. В Python для итераций используются циклы for (для последовательностей) и while (пока условие истинно).
Пример цикла for:
for i in range(5):
print(i)
Пример цикла while:
i = 0
while i < 5:
print(i)
i += 1
Вопрос 1: Какой цикл используется для итерации по диапазону чисел?
Вопрос 2: Какой цикл выполняется, пока условие истинно?
Напиши цикл, который выводит числа от 1 до 5.
for i in range(1, 6):
print(i)
Условие: Напишите функцию reverseInteger(x), которая переворачивает цифры числа и возвращает перевёрнутое число.
В коде оставлена небольшая ошибка – найдите её.
def reverseInteger(x):
sign = -1 if x < 0 else 1
x = abs(x)
rev = int(str(x)[::-1]) # Ошибка: возможно, забыта проверка на переполнение
return sign * rev
print(reverseInteger(123))
Функции позволяют организовать повторное использование кода. Они определяются с помощью ключевого слова def, могут принимать параметры и возвращать значение через return.
Пример:
def greet(name):
return f"Hello, {name}!"
Вопрос 1: Как объявить функцию в Python?
Вопрос 2: Как вернуть значение из функции?
Напиши функцию, которая принимает число и возвращает его квадрат. Вызови функцию с числом 5 и выведи результат.
def square(x):
return x * x
print(square(5))
Условие: Дан массив цифр, представляющий неотрицательное число. Прибавьте единицу к этому числу и верните массив цифр.
Обратите внимание на небольшую ошибку в коде.
def plusOne(digits):
n = len(digits)
for i in range(n-1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + digits
print(plusOne([1,2,3]))
Строка – это последовательность символов. В Python строки неизменяемы. С ними можно работать с помощью срезов, методов форматирования и встроенных методов, таких как upper(), lower() и split().
Пример: text = "Hello, World!"
Вопрос 1: Что выведет код: print("Hello"[1:4])?
Вопрос 2: Какой метод переводит строку в верхний регистр?
Напиши код, который берёт строку "Python", выводит её в обратном порядке и затем выводит её в верхнем регистре.
text = "Python"
print(text[::-1])
print(text.upper())
Условие: Напишите функцию longestCommonPrefix(strs), которая находит самый длинный общий префикс среди списка строк.
Небольшая ошибка в коде оставлена намеренно.
def longestCommonPrefix(strs):
if not strs:
return ""
prefix = strs[0]
for s in strs[1:]:
while not s.startswith(prefix):
prefix = prefix[:-1]
if not prefix:
return ""
return prefix
print(longestCommonPrefix(["flower","flow","flight"]))
Кортеж – неизменяемая упорядоченная коллекция, создаётся с помощью круглых скобок. Словарь – коллекция пар «ключ: значение», а множество – неупорядоченная коллекция уникальных элементов.
Примеры:
tuple_example = (1, 2, 3)
dict_example = {"name": "Alice", "age": 25}
set_example = {1, 2, 3}
Вопрос 1: Какой из этих типов данных является неизменяемым?
Вопрос 2: Какой метод используется для добавления элемента в множество?
Создай кортеж из трёх элементов, словарь с ключами "name" и "age" и множество с числами 1,2,3. Затем добавь новый элемент в множество и выведи все структуры.
tuple_example = (1, 2, 3)
dict_example = {"name": "Bob", "age": 30}
set_example = {1, 2, 3}
set_example.add(4)
print("Кортеж:", tuple_example)
print("Словарь:", dict_example)
print("Множество:", set_example)
Условие: Даны две строки s и t, определите, являются ли они анаграммами.
В коде допущена небольшая ошибка – найдите её и исправьте.
def isAnagram(s, t):
return sorted(s) == sorted(t)
print(isAnagram("anagram", "nagaram"))
Обработка исключений позволяет перехватывать и обрабатывать ошибки в программе с помощью конструкций try, except и finally.
Пример:
try:
result = 10 / 0
except ZeroDivisionError:
print("Деление на ноль!")
finally:
print("Завершение")
Вопрос 1: Какая конструкция используется для обработки ошибок?
Вопрос 2: Что делает блок finally?
Напиши код, который делит 10 на 0 в блоке try, перехватывает исключение ZeroDivisionError и выводит сообщение "Ошибка деления", а затем в блоке finally выводит "Конец обработки".
try:
result = 10 / 0
except ZeroDivisionError:
print("Ошибка деления")
finally:
print("Конец обработки")
Условие: Напишите функцию strStr(haystack, needle), которая возвращает индекс первого вхождения needle в haystack или -1, если вхождения нет.
Небольшая ошибка оставлена в коде.
def strStr(haystack, needle):
if needle == "":
return 0
for i in range(len(haystack) - len(needle) + 1):
if haystack[i:i+len(needle)] == needle:
return i
return -1
print(strStr("hello", "ll"))
Классы позволяют создавать собственные типы данных, объединяя свойства (атрибуты) и методы (функции) в один объект. Метод __init__ вызывается при создании объекта.
Пример:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hi, I'm {self.name}!"
Вопрос 1: Как объявляется класс в Python?
Вопрос 2: Как называется метод, вызываемый при создании объекта?
Напиши класс Person с атрибутами name и age и методом greet(), который возвращает приветствие. Создай объект класса и выведи результат метода.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hi, I'm {self.name} and I'm {self.age} years old."
p = Person("Anna", 30)
print(p.greet())
Условие: Реализуйте класс MyHashMap с методами put(key, value), get(key) и remove(key).
Небольшая ошибка в коде оставлена – найдите и исправьте её.
class MyHashMap:
def __init__(self):
self.size = 1000
self.map = [[] for _ in range(self.size)]
def put(self, key, value):
hash_key = key % self.size
for i, kv in enumerate(self.map[hash_key]):
if kv[0] == key:
self.map[hash_key][i] = (key, value)
return
self.map[hash_key].append((key, value))
def get(self, key):
hash_key = key % self.size
for kv in self.map[hash_key]:
if kv[0] == key:
return kv[1]
return -1
def remove(self, key):
hash_key = key % self.size
for i, kv in enumerate(self.map[hash_key]):
if kv[0] == key:
del self.map[hash_key][i]
return
h = MyHashMap()
h.put(1, 1)
print(h.get(1))
Лямбда функции – это анонимные функции, определяемые с помощью ключевого слова lambda. Они часто используются для кратких вычислений. Генераторы и списковые включения позволяют компактно создавать последовательности.
Пример лямбда функции: f = lambda x: x * 2
Пример спискового включения: [x*x for x in range(5)]
Вопрос 1: Что выведет код: f = lambda x: x * 2; print(f(5))?
Вопрос 2: Какой синтаксис используется для создания списка квадратов чисел от 0 до 4?
Напиши лямбда функцию, которая вычисляет куб числа, и с помощью спискового включения создай список квадратов чисел от 0 до 9.
cube = lambda x: x ** 3
print("Куб числа 3:", cube(3))
squares = [x * x for x in range(10)]
print("Квадраты от 0 до 9:", squares)
Условие: Напишите функцию fibonacci(n), которая возвращает список первых n чисел Фибоначчи.
В коде допущена небольшая ошибка – найдите её и исправьте.
def fibonacci(n):
a, b = 0, 1
result = []
for _ in range(n):
result.append(a)
a, b = b, a + b # Ошибка: возможно, нужно проверить порядок операций
return result
print(fibonacci(10))