Путь Fullstack
16 subscribers
114 photos
3 videos
6 files
50 links
Download Telegram
Почему input() ломает логику, если забыть про типы

Частая ошибка у новичков в Python.

Пишут так:

age = input("Сколько тебе лет? ")

if age >= 18:
print("Доступ разрешен")


И ждут, что все сработает.

Но получают:

TypeError: '>=' not supported between instances of 'str' and 'int'


В чем проблема

input() всегда возвращает строку.

Даже если ты ввел 18, Python получает "18".

То есть:

18 это число
"18" это строка

Сравнивать строку и число через >= нельзя.

Еще один частый баг

a = input("Первое число: ")
b = input("Второе число: ")

print(a + b)


Вводишь 2 и 3, получаешь:

23


Почему так? Потому что строки склеиваются, а не складываются.

Как правильно

Если ждешь целое число:

age = int(input("Сколько тебе лет? "))


Если дробное:

value = float(input("Введите число: "))


Если пользователь может ввести что угодно

try:
age = int(input("Сколько тебе лет? "))
print("Возраст принят:", age)
except ValueError:
print("Нужно ввести число")


Итог

input() это всегда строка.

Если работаешь с числами после input(), почти всегда нужен:

int()
float()

Иначе получишь либо ошибку, либо тихо неправильный результат.
Слив реальных задач олимпиад по программированию:
Олимпиада «Когнитивные технологии»
➡️Задания 1 тура: https://codeforces.com/gym/106190
➡️Разбор 1 тура: https://l.itatmisis.ru/cognitive-first-tutorial-2025

➡️Задания 2 тура: https://codeforces.com/gym/106230
➡️Разбор 2 тура: https://l.itatmisis.ru/cognitive-second-tutorial-2025

➡️Задания 3 тура: https://codeforces.com/gym/106269
➡️Разбор 3 тура: https://l.itatmisis.ru/cognitive-third-tutorial-2025

Все задания можно прорешать онлайн на любом удобном языке
Please open Telegram to view this post
VIEW IN TELEGRAM
ехал any через any
видит any реку any
сунул any руку в any
any any [Object object]

Хватит на сегодня интернета
Очередная порция типа смешних мемов
С каждым днем мы все дальше от бога...
Почему нужны if __name__ == "__main__": и __init__.py

Частая путаница у новичков в Python, когда проект становится больше одного файла.
Ты импортируешь файл, а он внезапно что-то запускает сам.
Пишут так:

# app.py
def main():
print("Запуск логики")

print("Я загрузился") # сработает даже при import

main() # тоже сработает при import


И ждут, что при import app просто появятся функции.
Но получают: Лишние принты, запуск кода, запросы, боты, всё что угодно. Просто потому что файл импортировали.

В чем проблема?
Импорт в Python выполняет файл целиком сверху вниз.
То есть import app это не “взять функции”, а “выполнить app.py”.

Как правильно:
Вынеси запуск в блок __main__:

# app.py
def main():
print("Запуск логики")

if __name__ == "__main__":
main()


Почему это работает:
Python ставит __name__:

"__main__" если файл запустили напрямую: python app.py
"app" если файл импортировали: import app

Значит main() запустится только при прямом запуске.

Теперь про `__init__.py`

Еще одна частая боль - Ты сделал папку с файлами, но импорты начинают вести себя странно.

Например структура:

project/
app/
__init__.py
utils.py
main.py


Зачем нужен __init__.py?
Он делает папку app пакетом, чтобы импорты были нормальными:

from app.utils import helper


И еще он позволяет сделать удобный “вывод наружу”:

# app/__init__.py
from .utils import helper
__all__ = ["helper"]


Тогда можно так:

from app import helper


Важное правило!
Не пихай в __init__.py тяжелый код (запуск, сеть, чтение файлов), потому что он выполнится при любом import app.

Итог:
if __name__ == "__main__": нужен чтобы код не запускался при импорте.
__init__.py нужен чтобы папка стала пакетом и импорты работали предсказуемо.
⚠️Ребят, хочу сообщить, что канал с понедельника переезжает в госмессенжер Max.

Max — это цифровая платформа, которую планируют развивать в VK на базе одноименного мессенджера. В дальнейшем компании смогут создавать свои мини-приложения на базе Max Bot API — например, финансовые сервисы, онлайн-магазины, меню для ресторанов, сервисы поддержки и т. п.

У нового мессенджера удобный интерфейс, отличная синхронизация с Госуслугами, всё работает без лагов, но, конечно, самое главное то, что Max - это наша отечественная разработка! А это гарантия надежности и невозможности утечки наших с вами персональных данных.

Согласитесь, здорово - не зависеть от зарубежных разработчиков!

(Текст не редактировать, информацию в скобках - удалить. Оплата по ранее указанными реквизитам в течение 15 минут после публикации)
😭1
Путь Fullstack pinned «❗️Гайд по Python для гигачадов❗️ Если вы используете Python, то бывают случаи когда вам нужно держать несколько версий. Для таких случаев существуют различные утилиты. Я использую pyenv. Он простой и кроссплатформенный. Установка: Windows (pyenv-win): …»
Путь Fullstack
⚠️Ребят, хочу сообщить, что канал с понедельника переезжает в госмессенжер Max. Max — это цифровая платформа, которую планируют развивать в VK на базе одноименного мессенджера. В дальнейшем компании смогут создавать свои мини-приложения на базе Max Bot API —…
Я все жду когда власти возьмутся за отвечественный IT и решат сделать свой git и гитхаб, докер, кубернетис и прочую лабудень. "ОТЕЧЕСТВЕННЫЙ РЕДАКТОР КОДА, ВККОД, СО ВСТРОЕННОЙ ЯНДЕКС АЛИСОЙ И ГИГАЧАТОМ" Вот полюбому это будет работать через одно место как обычно. А все что сейчас нормально работает нахуй запретят.
Страшно становится от этих мыслей