🎯 Разбор задачи «Найди ошибку в магическом рецепте» на 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
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти