Он жил в волшебном королевстве Программия и очень хотел стать великим волшебником данных!
Однажды к нему прилетел добрый Дракон CSV 🐉 и сказал:
"Я научу тебя хранить сокровища — имена героев, годы их подвигов и даже знаки зодиака!
Мы будем записывать всё в мой магический свиток под названием Books.csv!"
# Волшебная палочка для работы с CSV-свитками
import csv
# Создаём НОВЫЙ сундук (старый исчезнет!)
file = open("Stars.csv", "w")
newRecord = "Brian, 73, Taurus\n"
file.write(newRecord)
file.close() # Обязательно закрываем — иначе сокровища потеряются!
# Добавляем ещё одного героя в конец
file = open("Stars.csv", "a")
name = input("Имя героя: ")
age = input("Возраст: ")
star = input("Знак зодиака: ")
newRecord = name + ", " + age + ", " + star + "\n"
file.write(newRecord)
file.close()
# Читаем весь сундук
file = open("Stars.csv", "r")
for row in file:
print(row.strip()) # strip() убирает лишние переносы
file.close()
🗡️ Задание 112
Помоги Питончику добавить нового героя в сундук Books.csv,
а потом вывести всех героев по одному на строку!
# Добавляем новую книгу
file = open("Books.csv", "a", encoding="utf-8")
author = input("Введите автора: ")
title = input("Введите название книги: ")
year = input("Введите год издания: ")
newRecord = author + ", " + title + ", " + year + "\n"
file.write(newRecord)
file.close()
# Выводим все книги красиво
file = open("Books.csv", "r", encoding="utf-8")
print("\n📚 Вот все книги в королевской библиотеке:")
for row in file:
print(row.strip()) # strip() убирает \n в конце
file.close()
🗡️ Задание 113
Сколько героев хочет добавить король? Пусть введёт число, добавит книги,
а потом найдём все книги одного автора!
num = int(input("Сколько книг добавить в библиотеку? "))
file = open("Books.csv", "a", encoding="utf-8")
for i in range(num):
print(f"\n--- Книга {i+1} ---")
author = input("Автор: ")
title = input("Название: ")
year = input("Год: ")
file.write(author + ", " + title + ", " + year + "\n")
file.close()
# Теперь ищем книги автора
searchAuthor = input("\nЧьи книги ищем? ")
file = open("Books.csv", "r", encoding="utf-8")
found = False
for row in file:
if searchAuthor.lower() in row.lower():
print("Найдено: " + row.strip())
found = True
if not found:
print("Такого автора в библиотеке нет 😢")
file.close()
🗡️ Задание 114
Какие книги вышли между двумя годами? Помоги найти древние и новые фолианты!
start = int(input("Начальный год: "))
end = int(input("Конечный год: "))
file = open("Books.csv", "r", encoding="utf-8")
print(f"\nКниги с {start} по {end} год:")
for row in file:
parts = row.strip().split(",")
if len(parts) == 3:
year = int(parts[2])
if start < = year <= end:
print(f"✨ {parts[1]} — {parts[0]} ({year})")
file.close()
🗡️ Задание 115
Выведи книги с номерами — как в настоящем каталоге!
file = open("Books.csv", "r", encoding="utf-8")
print("📖 Каталог королевской библиотеки:\n")
count = 1
for row in file:
print(f"{count}. {row.strip()}")
count += 1
file.close()
🗡️ Задание 116 — Самое сложное!
Загрузи книги в список, удали одну, измени другую — и сохрани обратно!
# Читаем всё в список
file = open("Books.csv", "r", encoding="utf-8")
lines = file.readlines()
file.close()
# Показываем и удаляем
print("Текущие книги:")
for i, line in enumerate(lines):
print(f"{i}: {line.strip()}")
delete = int(input("\nКакую строку удалить? (номер): "))
del lines[delete]
change = int(input("Какую строку изменить? (номер): "))
print("Текущая:", lines[change].strip())
newAuthor = input("Новый автор: ")
newTitle = input("Новое название: ")
newYear = input("Новый год: ")
lines[change] = f"{newAuthor}, {newTitle}, {newYear}\n"
# Сохраняем обратно
file = open("Books.csv", "w", encoding="utf-8")
file.writelines(lines)
file.close()
print("Библиотека обновлена! 🏰")
🎯 Задание 117 — Математическая битва с драконом!
Создай игру: имя → 2 вопроса → сохрани всё в QuizResults.csv
import random
name = input("Введи своё имя, герой: ")
score = 0
results = [name] # будем собирать в список
for q in range(2):
a = random.randint(1, 10)
b = random.randint(1, 10)
correct = a * b
question = f"{a} × {b} = "
answer = int(input(question))
results.append(question.strip())
results.append(str(answer))
if answer == correct:
score += 1
results.append("Верно!")
else:
results.append(f"Неверно (правильно: {correct})")
results.append(str(score))
# Сохраняем в CSV
file = open("QuizResults.csv", "a", encoding="utf-8")
file.write(", ".join(results) + "\n")
file.close()
print(f"Игра окончена! Твой счёт: {score}/2 🎉")
print("Результаты сохранены в QuizResults.csv")
🔒 Введи секретный код, чтобы увидеть все решения сразу:
Молодец! Ты прошёл путь от маленького Питончика до настоящего Хранителя Данных! 🐉✨
Теперь ты можешь управлять любыми сокровищами в CSV-файлах!
Великое Приключение Питончика: Подпрограммы и Магия Tkinter
Великое Приключение Питончика
Подпрограммы и Магия Графического Интерфейса Tkinter
Что такое подпрограммы? (Функции)
Подпрограммы — это как маленькие волшебные помощники в королевстве Python! Представь, что у тебя есть гномики, каждый из которых умеет делать что-то одно, но делает это идеально.
def get_name():
user_name = input("Enter your name: ")
return user_name
Можно давать задания разным гномикам-подпрограммам
Важно помнить:
Подпрограмма должна быть определена до её вызова
Если хочешь передать данные из подпрограммы — используй return
Если подпрограмма получает данные — пиши их в скобках: def имя(переменная):
Задача 118
Определите подпрограмму, которая предлагает пользователю ввести число и сохраняет его в переменной num. Определите другую подпрограмму, которая использует значение num и проводит отсчёт от 1 до этого числа.
def get_number():
num = int(input("Введи число, до которого считать: "))
return num
def count_to_number(n):
print("Начинаем отсчёт!")
for i in range(1, n + 1):
print(i)
def main():
number = get_number()
count_to_number(number)
main()
Задача 119
Игра "Угадай число" с тремя подпрограммами:
Одна генерирует случайное число в заданном диапазоне
Вторая спрашивает у пользователя догадку
Третья проверяет ответ и подсказывает "больше" или "меньше"
import random
def generate_secret():
low = int(input("Минимальное число: "))
high = int(input("Максимальное число: "))
return random.randint(low, high)
def get_guess():
return int(input("Твой вариант: "))
def play_game():
secret = generate_secret()
print("Я загадал число! Попробуй угадать!")
guess = get_guess()
while guess != secret:
if guess < secret:
print("Моё число БОЛЬШЕ!")
else:
print("Моё число МЕНЬШЕ!")
guess = get_guess()
print("ПОЗДРАВЛЯЮ! Ты угадал!")
play_game()
Задача 120
Математическая викторина с меню:
Addition / Subtraction В зависимости от выбора — разные задания и проверка ответа.
import random
def addition_quiz():
a = random.randint(5, 20)
b = random.randint(5, 20)
answer = int(input(f"{a} + {b} = "))
correct = a + b
return answer == correct, correct
def subtraction_quiz():
a = random.randint(25, 50)
b = random.randint(1, 25)
answer = int(input(f"{a} - {b} = "))
correct = a - b
return answer == correct, correct
def show_menu():
print("1. Addition")
print("2. Subtraction")
return input("Enter 1 or 2: ")
def main():
choice = show_menu()
if choice == "1":
correct, real = addition_quiz()
elif choice == "2":
correct, real = subtraction_quiz()
else:
print("Неверный выбор!")
return
if correct:
print("Correct!")
else:
print(f"Incorrect, the answer is {real}")
main()
Задача 121
Полноценная программа-менеджер списка имён с меню:
Добавить имя
Изменить имя
Удалить имя
Показать все
Выход
def show_menu():
print("\n" + "="*30)
print(" МЕНЕДЖЕР ИМЁН")
print("="*30)
print("1. Добавить имя")
print("2. Изменить имя")
print("3. Удалить имя")
print("4. Показать все имена")
print("5. Выйти")
print("="*30)
def add_name(names):
name = input("Введи имя: ").strip()
if name:
names.append(name)
print(f"Имя '{name}' добавлено!")
def edit_name(names):
if not names:
print("Список пуст!")
return
for i, n in enumerate(names):
print(f"{i}. {n}")
idx = int(input("Номер имени для изменения: "))
if 0 < = idx < len(names):
new_name = input("Новое имя: ")
names[idx] = new_name
print("Изменено!")
def delete_name(names):
if not names:
print("Список пуст!")
return
for i, n in enumerate(names):
print(f"{i}. {n}")
idx = int(input("Номер имени для удаления: "))
if 0 < = idx < len(names):
removed = names.pop(idx)
print(f"Имя '{removed}' удалено!")
def show_names(names):
if names:
print("\nСписок имён:")
for i, name in enumerate(names, 1):
print(f"{i}. {name}")
else:
print("Список пуст!")
def main():
names = []
while True:
show_menu()
choice = input("Выбери действие (1-5): ")
if choice == "1":
add_name(names)
elif choice == "2":
edit_name(names)
elif choice == "3":
delete_name(names)
elif choice == "4":
show_names(names)
elif choice == "5":
print("До свидания!")
break
else:
print("Неверный выбор!")
main()
Магия Tkinter — Создаём окошки!
Теперь Питончик научился создавать настоящие графические окна с кнопками, полями и списками!
Ты прошёл путь от новичка до Великого Волшебника Python!
Теперь ты умеешь создавать подпрограммы и настоящие графические программы!
Продолжай творить магию кода!
Питончик и Волшебные Подпрограммы + GUI-приключение
Питончик и Волшебные Подпрограммы + GUI-Магия
✨
Жил-был маленький Питончик
Он устал писать одно и то же снова и снова. И тогда к нему прилетела Фея Подпрограмм
— "Я научу тебя создавать волшебные заклинания-функции! Напишешь один раз — используешь тысячу!"
А потом появилась ещё и Фея Tkinter с блестящими окошками
Что такое подпрограмма?
Это как маленький помощник-гномик, который умеет делать одну работу идеально:
Ты говоришь: "Гномик, принеси имя!" → он спрашивает у пользователя и приносит
Ты говоришь: "Гномик, поздоровайся!" → он машет ручкой и говорит "Привет!"
Главный гномик main() командует всеми остальными
# Волшебные гномики в действии!
def get_name():
name = input("Как тебя зовут? ")
return name
def say_hello(name):
print("Привет,", name + "!")
def main():
person = get_name()
say_hello(person)
main() # Запускаем главного гномика!
Задание 118 — Обратный отсчёт
Создай двух гномиков: один спрашивает число, второй считает от 1 до него!
def get_number():
num = int(input("До скольки считать? "))
return num
def countdown(n):
for i in range(1, n+1):
print(i)
def main():
number = get_number()
countdown(number)
main()
import random
def addition_quiz():
a = random.randint(5,20)
b = random.randint(5,20)
ans = int(input(f"{a} + {b} = "))
return ans == a + b, a + b
def subtraction_quiz():
a = random.randint(25,50)
b = random.randint(1,25)
ans = int(input(f"{a} - {b} = "))
return ans == a - b, a - b
def check_answer(correct, real):
if correct:
print("Правильно!")
else:
print(f"Неправильно! Правильный ответ: {real}")
def main():
print("1. Сложение\n2. Вычитание")
choice = input("Выбери 1 или 2: ")
if choice == "1":
correct, real = addition_quiz()
elif choice == "2":
correct, real = subtraction_quiz()
else:
print("Такого варианта нет!")
return
check_answer(correct, real)
main()
Задание 121 — Менеджер имён
Полноценная программа с меню!
def show_menu():
print("\nУПРАВЛЕНИЕ СПИСКОМ ИМЁН")
print("1. Добавить имя")
print("2. Изменить имя")
print("3. Удалить имя")
print("4. Показать все имена")
print("5. Выход")
def add_name(names):
name = input("Введи имя: ")
names.append(name)
print("Добавлено!")
def change_name(names):
for i, n in enumerate(names):
print(i, n)
idx = int(input("Какой номер изменить? "))
if 0 < = idx < len(names):
new = input("Новое имя: ")
names[idx] = new
def dele we ete_name(names):
for i, n in enumerate(names):
print(i, n)
idx = int(input("Какой номер удалить? "))
if 0 < = idx < len(names):
names.pop(idx)
def show_names(names):
if names:
for i, n in enumerate(names):
print(f"{i+1}. {n}")
else:
print("Список пуст!")
def main():
names = []
while True:
show_menu()
choice = input("Выбери действие: ")
if choice == "1":
add_name(names)
elif choice == "2":
change_name(names)
elif choice == "3":
delete_name(names)
elif choice == "4":
show_names(names)
elif choice == "5":
print("До свидания!")
break
else:
print("Неверный выбор!")
main()
Подпрограммы должны быть определены до их вызова, а данные передаются через return и параметры в скобках.
Задача 118
Определите подпрограмму, которая предлагает пользователю ввести число и сохраняет его в переменной num. Определите другую подпрограмму, которая использует значение num и проводит отсчёт от 1 до этого числа.
def get_number():
num = int(input("Введи число, до которого будем считать: "))
return num
def count_up(n):
for i in range(1, n+1):
print(i)
def main():
number = get_number()
count_up(number)
main()
Задача 119
Определите три подпрограммы для игры «Угадай число»:
• генерирует случайное число в диапазоне
• предлагает угадать
• проверяет, подсказывает «больше»/«меньше», пока не угадает
Создайте окно, которое предлагает пользователю ввести имя. Когда пользователь нажимает кнопку, в окне должно выводиться сообщение «Hello [имя]» с изменением цвета фона и цвета шрифта текстовой области.