Семь программ ниже помещаются в 20-80 строк и набираются на телефоне за вечер-два. Все консольные, без окон и без сети. Ключ API и база данных не нужны ни одной.

Почему с телефона пишут только консоль?
Графика упирается в две стенки. Pygame 2 в Pydroid 3 лежит в премиум-репозитории, а в бесплатном a-Shell на iPhone его нет вовсе; Pythonista 3 стоит 9,99 доллара. Tkinter в Pydroid 3 открыт даром, но окно рисуется поверх Android, и кнопка под палец не рассчитана.
Вывод у всех семи один: print. Ввод один: input. Этого хватает на список, словарь, функцию, цикл, срез строки и файл. Проекты идут по возрастанию сложности, первым берите номер один: там один словарь и одна арифметическая строка.
Семь проектов от простого к сложному
1. Конвертер валют по курсу, вбитому вручную
Что делает: спрашивает валюту и сумму, умножает на курс из словаря. Осваиваете: словарь, проверку in, float(), формат :.2f. Строк: 9. Споткнётесь: запятая на телефоне ставится легче точки, а float("12,5") падает с ValueError. Лечит .replace(",", ".").
RATES = {"usd": 78.50, "eur": 92.10, "cny": 11.00}
code = input("Валюта (usd/eur/cny): ").strip().lower()
amount = float(input("Сколько: ").replace(",", "."))
if code in RATES:
print(f"{amount:g} {code.upper()} = {amount * RATES[code]:.2f} RUB")
else:
print("Такой валюты в списке нет")Что выведет на вводе usd и 40: 40 USD = 3140.00 RUB. На gbp: Такой валюты в списке нет. Курсы условные, подставите свои.
2. Счётчик расходов за день
Что делает: принимает суммы до пустой строки, печатает итог, число трат и среднюю. Осваиваете: while True с break, список, sum(), len(). Строк: 20-25. Споткнётесь: пустая строка это if not line:, а деление на len([]) уронит всё.
3. Список покупок с самой дорогой позицией
Что делает: берёт список пар вида ("молоко", 89), ищет самую дорогую позицию и сумму чека. Осваиваете: кортежи, распаковку for name, price in items, max() с key=lambda x: x[1]. Строк: 25-30. Споткнётесь: без key максимум ищется по названию: ошибки нет, ответ тихо неверный.
4. Генератор пароля
Что делает: собирает пароль заданной длины из букв, цифр и знаков. Осваиваете: модуль secrets и его choice, сложение строк в цикле, string.ascii_letters и string.digits. Строк: 20-25. Споткнётесь: рука тянется к random, а для паролей берут secrets. И знаки !@#$%^&* наберите один раз, в переменную.
5. Шифр Цезаря
Что делает: сдвигает буквы по алфавиту на N позиций. Осваиваете: свою функцию с return, поиск через .index(), остаток % для замыкания алфавита в кольцо. Строк: 14. Споткнётесь: на букве ё. Ниже её нет намеренно, алфавит из 32 букв. Добавите ё, станет 33, и старые шифровки поедут.
AZ = "абвгдежзийклмнопрстуфхцчшщъыьэюя"
def caesar(text, shift):
out = ""
for ch in text.lower():
if ch in AZ:
out += AZ[(AZ.index(ch) + shift) % len(AZ)]
else:
out += ch
return out
secret = caesar("встреча в семь", 3)
print(secret)
print(caesar(secret, -3))Что выведет: первой строкой ефхуиъг е фипя, второй встреча в семь. Функция расшифровки не нужна: тот же вызов с числом -3.
6. Викторина по словарю вопросов
Что делает: прогоняет 5-7 вопросов, считает очки, печатает «4 из 6». Осваиваете: список словарей, enumerate, счётчик, .strip().lower(). Строк: 40-50, половина из них вопросы. Споткнётесь: клавиатура ставит заглавную в начале и пробел в конце, поэтому answer == "париж" провалится на «Париж ».
7. Трекер привычек в текстовом файле
Что делает: дописывает дата;привычка в habits.txt и считает дни по каждой привычке. Осваиваете: with open(..., "a", encoding="utf-8"), .split(";"), date.today(), перехват FileNotFoundError. Строк: 55-80. Споткнётесь: на месте файла и на кодировке. Реализация другая, чем в разборе трекера привычек: там объект и меню, здесь append-лог, который сворачивается в счётчик.
Проект | Что осваиваете | Строк | Где споткнётесь |
|---|---|---|---|
1. Конвертер валют | Словарь, float, f-строка | 9-15 | Запятая вместо точки |
2. Счётчик расходов | while, список, sum | 20-25 | Деление на len пустого списка |
3. Список покупок | Кортежи, max с key | 25-30 | max без key берёт по названию |
4. Генератор пароля | secrets, константы строк | 20-25 | Привычка взять random |
5. Шифр Цезаря | Функция, index, остаток % | 14-35 | Буква ё и длина алфавита |
6. Викторина | Словари, enumerate, счёт | 40-50 | Автозаглавная буква в ответе |
7. Трекер привычек | with open, split, except | 55-80 | Файл теряется в песочнице |
Грабли, которых нет на ноутбуке
Отступы разъезжаются
Клавиатура вставляет то таб, то два пробела, автозамена съедает третий, Python отвечает IndentationError или TabError. Правило: четыре пробела, табов ноль.
Длинные имена не набрать
На ноутбуке total_expenses_for_today набирается за секунду, на телефоне это тридцать тапов и три опечатки. Берите короткие честные: total, items, rates.
Ctrl+C не существует
Зациклился while True, а Ctrl на экранной клавиатуре нет. В Pydroid 3 цикл гасит кнопка стоп на панели запуска, в Termux сочетание «громкость вниз + C». Циклы без явного выхода лучше не писать.
Четвёртая грабля: седьмой проект кладёт habits.txt в песочницу приложения, а не туда, куда смотрит файловый менеджер. Путь покажет print(os.path.abspath("habits.txt")).
Кодик — это не просто приложение, а твой личный наставник в мире программирования. Он объясняет всё простыми словами, помогает закреплять знания на практике и даёт крутые ачивки за успехи 🏅
А ещё у нас тёплое и дружеское комьюнити в telegram, где каждый может задать вопрос и получить ответ — без осуждения и лишней теории. Мы вместе решаем задачи, разбираем ошибки и поддерживаем друг друга на пути к цели.
С Кодиком учиться программированию действительно приятно и интересно 💙
