📝 Практические задания

⚡ Задания в двух словах

  • 7 вопросов для самопроверки по C-style, format() и f-strings.
  • 2 практические задачи: счётчик слов и формат даты.
  • 2 задачи из домашнего задания LMS.

🏃 Разминка

Вопрос 1. Какой результат?

name = "Alice"
age = 30
text = "My name is %d and I am %s years old." % (name, age)
print(text)
  • a. "My name is Alice and I am 30 years old."
  • b. "My name is %s and I am %d years old."
  • c. Ошибка
  • d. "My name is Alice and I am %d years old."

Ответ: c%d ожидает число, а передана строка.

Вопрос 2. Какой результат?

pi = 3.14159
text = "The value of pi is approximately %.2f." % pi
print(text)
  • a. "The value of pi is approximately 3.14."
  • b. "The value of pi is approximately 3.14159."
  • c. Ошибка
  • d. "The value of pi is approximately %.2f."

Ответ: a%.2f округляет до двух знаков.

Вопрос 3. Какой результат?

text = f"The sum of {10} and {20} is {10 + 20}."
print(text)
  • a. "The sum of 10 and 20 is 30."
  • b. "The sum of 10 and 20 is {10 + 20}."
  • c. Ошибка
  • d. "The sum of {10} and {20} is {10 + 20}."

Ответ: a — f-string вычисляет выражение в фигурных скобках.

Вопрос 4. Какой результат?

text = "The {0} is {color}.".format("sky", color="blue")
print(text)
  • a. "The sky is color."
  • b. "The {0} is {color}."
  • c. "The sky is blue."
  • d. "The 0 is color."

Ответ: c — позиционный аргумент 0 и именованный color.

Вопрос 5. Какой результат?

number = 1234.5678
print(f"Formatted number: {number:.2f}")
  • a. "Formatted number: 1234.5678"
  • b. "Formatted number: 1234.57"
  • c. "Formatted number: 1234.56"
  • d. "Formatted number: 1234.56f"

Ответ: b — округление до двух знаков.

Вопрос 6. Какой результат?

large_number = 9876543210
print(f"The number is: {large_number:,}")
  • a. "The number is: 9876,543,210"
  • b. "The number is: 9,876543210"
  • c. "The number is: 9,876,543,210"
  • d. "The number is: 9876543210,"

Ответ: c — запятые разделяют каждые три разряда.

Вопрос 7. Какой результат?

text = f"{'Python':_^10}"
print(text)
  • a. "Python____"
  • b. "__Python__"
  • c. "Python "
  • d. Ошибка

Ответ: b — ширина 10, центрирование, заполнение _.

🏋️ Практические задачи

Задача 1. Счётчик слов

Условие: напишите программу, которая обрабатывает строку и выводит её, добавив к каждому слову его порядковый номер, выравнивая текст по левому краю с длиной в 15 символов. Слова выводите с большой буквы.

Пример вывода:

Введите строку: Hello world Python is great
1. Hello
2. World
3. Python
4. Is
5. Great

Подсказка: используйте split(), capitalize() и f"{i}. {word:<15}".

Задача 2. Формат даты

Условие: напишите программу, которая принимает дату в виде числа, месяца и года, а затем выводит её в формате dd/mm/yyyy, где день и месяц всегда состоят из двух цифр.

Пример вывода:

Введите день: 3
Введите месяц: 7
Введите год: 2024
Дата: 03/07/2024

Подсказка: используйте спецификатор :02.

Задача 3. Сумма положительных чисел

Условие: обработайте список float чисел, вычислите сумму положительных чисел и выведите результат в формате денежной суммы: символ $, разделители тысяч и два знака после запятой.

numbers = [1245.4435, -302.1403, 87459.99, -520.8265, 1450.001]

Пример вывода:

Сумма положительных чисел: $90,155.43

Задача 4. Счета клиентов

Условие: программа принимает список строк в формате "name age balance" и выводит информацию о каждом человеке с отформатированными данными: имя — 10 символов, возраст — 3 символа, баланс — 10 символов с двумя знаками после запятой.

data_list = [
    "John 23 12345.678",
    "Alice 30 200.50",
    "Bob 35 15000.3",
    "Charlie 40 500.75"
]

Пример вывода:

Имя: John       | Возраст:  23 | Баланс:  12345.68
Имя: Alice      | Возраст:  30 | Баланс:    200.50
Имя: Bob        | Возраст:  35 | Баланс:  15000.30
Имя: Charlie    | Возраст:  40 | Баланс:    500.75

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Что описывает Django model?

Вопрос 2

Что такое QuerySet?

Вопрос 3

Почему f-string часто удобнее конкатенации?

Вопрос 4

Какой метод убирает пробелы по краям строки?

Вопрос 5

Какой стиль имён переменных обычно рекомендует PEP 8?

Вопрос 6

Зачем использовать f-strings в современном Python?

Вопрос 7

Когда полезен ранний возврат из функции?