🎯 Разбор задачи «Найди ошибку в магическом рецепте» на Python
Привет всем, кто искал баг в коде! 👏 Сегодня разберём ошибку подробно — шаг за шагом. 👇
🔎 Разбор задачи по шагам
Шаг 1. Анализ кода и поиск ошибки
Исходный код:
```python
ingredients = ['корень мандрагоры', 'крыло бабочки', 'капля росы', 'лунный свет']
count = len(ingredients)
print('В котле бурлит зелье из ' + count + ' ингредиентов!')
```
Программа не запускается и выдаёт ошибку:
```
TypeError: can only concatenate str (not "int") to str
```
🧠 В чём проблема?
Функция `len()` возвращает число (тип `int`), а оператор `+` в контексте строк ожидает, что все части — строки (`str`). Python не может автоматически соединить строку и число — это вызывает ошибку типа (`TypeError`).
Шаг 2. Способы исправления
Есть несколько способов решить эту проблему — разберём самые популярные:
Вариант 1. Преобразование числа в строку с помощью `str()`
```python
print('В котле бурлит зелье из ' + str(count) + ' ингредиентов!')
```
🔬 Как работает: функция `str()` преобразует число `count` в строку, и теперь все части можно соединить оператором `+`.
Вариант 2. Использование f‑строк (современный и удобный способ)
```python
print(f'В котле бурлит зелье из {count} ингредиентов!')
```
💡 Как работает: f‑строки позволяют вставлять переменные прямо внутрь строки, используя фигурные скобки `{}`. Python сам позаботится о преобразовании типов.
Вариант 3. Использование метода `.format()`
```python
print('В котле бурлит зелье из {} ингредиентов!'.format(count))
```
✨ Как работает: метод `.format()` подставляет значение переменной `count` на место `{}` внутри строки.
Шаг 3. Выбор оптимального решения
Хотя все варианты работают, f‑строки (вариант 2) считаются наиболее читаемыми и современными в Python 3.6+. Они:
* проще для восприятия;
* быстрее выполняются;
* позволяют легко добавлять несколько переменных.
✅ Итоговый исправленный код (с использованием f‑строк)
```python
ingredients = ['корень мандрагоры', 'крыло бабочки', 'капля росы', 'лунный свет']
count = len(ingredients)
print(f'В котле бурлит зелье из {count} ингредиентов!')
```
Ожидаемый результат при запуске:
```
В котле бурлит зелье из 4 ингредиентов!
```
📚 Что мы повторили/выучили:
🐞 TypeError — ошибка типа, возникает при несовместимых операциях (например, сложении строки и числа).
🔢 Типы данных: `int` (целое число) и `str` (строка).
➕ Конкатенация строк — соединение строк оператором `+` (работает только со строками).
🛠 Способы форматирования строк:
`str()` — преобразование в строку;
f‑строки — современный способ вставки переменных;
`.format()` — классический метод форматирования.
🔗 Пройдите опрос и узнайте, какой курс обучения подходит именно вам:
📍 На сайте: https://infazy.ru/podobrat-kurs-python
📍 В боте: https://t.me/kursypythonbot
#Python #PythonЗадачи #ОшибкиВКоде #Отладка #ПрограммированиеДляНачинающих #ОбучениеПитону #PythonПрактика #БагиИФиксы #PythonB
Просмотры: 11