🎉 Разбор задачи: как ИИ «умножил» возраст и получил 2525 🎉
Спасибо всем, кто накидал свои версии в комментариях — было много крутых наблюдений! Давайте разложим эту ловушку по полочкам, чтобы в будущем сразу замечать такие моменты. 👇
🧠 Что делает код по шагам:
user_info = {"name": "Анна", "age": "25"} — создаём словарь, где возраст лежит как строка (обратите внимание на кавычки!).
get_user_age(user_info) — функция просто возвращает значение по ключу "age", то есть строку "25".
result = age * 2 — тут происходит магия, которая совсем не магия.
print(result) — выводим результат, и он удивляет тех, кто ожидал математику.
🤔 В чём подвох:
В Python оператор * для строки — это повторение, а не умножение.
Поэтому "25" * 2 превращается в "2525" (строка склеивается сама с собой).
Если бы возраст был числом (25 без кавычек), тогда 25 * 2 = 50 — и всё работало бы как ожидается.
Такая ошибка легко возникает, когда данные приходят из JSON, API, форм или генерируются ИИ: типы могут быть не теми, на которые вы рассчитываете.
✅ Какой результат мы получаем:
2525
🛠 Как сделать правильно (три надёжных подхода):
Привести тип явно (самый простой вариант для быстрых скриптов):
result = int(age) * 2
Валидировать и приводить тип внутри функции (лучше для переиспользуемого кода):
def get_user_age(data):
value = data.get("age")
if isinstance(value, str):
return int(value)
return value
Проверять типы и обрабатывать ошибки (идеально для продакшена):
def get_user_age(data):
value = data.get("age")
try:
return int(value)
except (ValueError, TypeError):
raise ValueError("Поле age должно быть числом или строкой с числом")
💡 Почему это важно:
ИИ-ассистенты часто выдают рабочий синтаксически код, но не гарантируют корректные типы данных.
Одна пропущенная проверка типа может сломать расчёты, отчёты и логику приложения.
Привычка валидировать входные данные (особенно из внешних источников) — это признак зрелого разработчика.
🚀 Бонус для тех, кто хочет использовать ИИ без риска для кода:
Хотите узнать, как не дать ИИ незаметно сломать ваш проект и как превратить его в надёжного наставника, который ускоряет работу, а не создаёт баги?
Забирайте гайд «Как ИИ разрушает твой код (и карьеру), и как превратить его в своего лучшего наставника» — там разберём типичные кейсы, чек-листы проверок и шаблоны безопасного использования ИИ в разработке.
👉 Ссылка на гайд: https://vk.ru/market/product/kak-ii-razrushaet-tvoy-kod-i-karyeru-i-kak-prevratit-ego-v-svoego-luchshego-nastavnika-233041006-14761275
#Python #РазборКода #ИИвРазработке #ОшибкиНовичков #ОбучениеПрограммированию #PythonДляНачинающих #ПрактикаКода
Спасибо всем, кто накидал свои версии в комментариях — было много крутых наблюдений! Давайте разложим эту ловушку по полочкам, чтобы в будущем сразу замечать такие моменты. 👇
🧠 Что делает код по шагам:
user_info = {"name": "Анна", "age": "25"} — создаём словарь, где возраст лежит как строка (обратите внимание на кавычки!).
get_user_age(user_info) — функция просто возвращает значение по ключу "age", то есть строку "25".
result = age * 2 — тут происходит магия, которая совсем не магия.
print(result) — выводим результат, и он удивляет тех, кто ожидал математику.
🤔 В чём подвох:
В Python оператор * для строки — это повторение, а не умножение.
Поэтому "25" * 2 превращается в "2525" (строка склеивается сама с собой).
Если бы возраст был числом (25 без кавычек), тогда 25 * 2 = 50 — и всё работало бы как ожидается.
Такая ошибка легко возникает, когда данные приходят из JSON, API, форм или генерируются ИИ: типы могут быть не теми, на которые вы рассчитываете.
✅ Какой результат мы получаем:
2525
🛠 Как сделать правильно (три надёжных подхода):
Привести тип явно (самый простой вариант для быстрых скриптов):
result = int(age) * 2
Валидировать и приводить тип внутри функции (лучше для переиспользуемого кода):
def get_user_age(data):
value = data.get("age")
if isinstance(value, str):
return int(value)
return value
Проверять типы и обрабатывать ошибки (идеально для продакшена):
def get_user_age(data):
value = data.get("age")
try:
return int(value)
except (ValueError, TypeError):
raise ValueError("Поле age должно быть числом или строкой с числом")
💡 Почему это важно:
ИИ-ассистенты часто выдают рабочий синтаксически код, но не гарантируют корректные типы данных.
Одна пропущенная проверка типа может сломать расчёты, отчёты и логику приложения.
Привычка валидировать входные данные (особенно из внешних источников) — это признак зрелого разработчика.
🚀 Бонус для тех, кто хочет использовать ИИ без риска для кода:
Хотите узнать, как не дать ИИ незаметно сломать ваш проект и как превратить его в надёжного наставника, который ускоряет работу, а не создаёт баги?
Забирайте гайд «Как ИИ разрушает твой код (и карьеру), и как превратить его в своего лучшего наставника» — там разберём типичные кейсы, чек-листы проверок и шаблоны безопасного использования ИИ в разработке.
👉 Ссылка на гайд: https://vk.ru/market/product/kak-ii-razrushaet-tvoy-kod-i-karyeru-i-kak-prevratit-ego-v-svoego-luchshego-nastavnika-233041006-14761275
#Python #РазборКода #ИИвРазработке #ОшибкиНовичков #ОбучениеПрограммированию #PythonДляНачинающих #ПрактикаКода
Views: 26