Изучаем Python: Волшебное приключение в мире кода — Часть 9: Кортежи, списки и словари — волшебные контейнеры для сокровищ!
Волшебное приключение в мире Python: Кортежи, списки и словари — волшебные контейнеры для сокровищ!
Привет, любопытный Кодик! В волшебном лесу Python ты нашел три волшебных контейнера для хранения сокровищ: кортежи, списки и словари. Представь: кортеж — это запечатанный сундук с фруктами, который нельзя открыть и изменить (fruit_tuple = ("apple", "banana", "strawberry", "orange") — как замороженные фрукты в ледяной шкатулке). Ты можешь посмотреть, где лежит клубника: print(fruit_tuple.index("strawberry")) — это 2, потому что счет начинается с 0, как нулевой этаж в замке. Или взять третий фрукт: print(fruit_tuple[2]) — "strawberry".
Список — это рюкзак, куда можно класть и вынимать вещи! names_list = ["John", "Tim", "Sam"] — рюкзак с именами. Удали Тима: del names_list[1] — как выкинуть старый ботинок. Добавь новое имя: names_list.append(input("Add a name: ")) — попроси друга дать имя и положи в рюкзак. Отсортируй: names_list.sort() — вещи в алфавитном порядке. Или покажи отсортированный, не меняя: print(sorted(names_list)).
Словарь — как волшебная книга с ключами: colours = {1: "red", 2: "blue", 3: "green"} — ключ 1 открывает "red". Измени: colours[2] = "yellow" — перекрась страницу.
Другие фокусы со списками: x = [154, 634, 892, 345, 341, 43] — рюкзак с числами. Длина: print(len(x)) — сколько вещей. Кусок: print(x[1:4]) — с 1 по 3. Перебрать: for i in x: print(i) — покажи каждую. Проверить: if num in x — есть ли в рюкзаке? Вставить: x.insert(2, 420) — запихни в середину. Удалить: x.remove(892) — вытащи по имени. Добавить: x.append(993) — в конец.
Эти контейнеры — как друзья Кодик: кортеж надежный и неизменный, список гибкий, словарь с секретами. Давай потренируемся собирать сокровища! Задачи — приключения. Решения за "123".
Задача 069: Кортеж стран
Создайте кортеж с названиями пяти стран. Выведите все содержимое кортежа. Предложите пользователю ввести название одной из этих стран и выведите индекс (то есть позицию в списке) этого элемента кортежа.
# Кортеж — запечатанный сундук со странами.
countries = ("Russia", "USA", "France", "Germany", "Japan")
# Выводим весь сундук.
print(countries)
# Просим ввести страну и показываем ее позицию (индекс начинается с 0).
country = input("Введите название страны: ")
print(countries.index(country))
Задача 070: Страна по индексу
Доработайте программу 069 так, чтобы она предлагала пользователю ввести число и выводила название страны, находящейся в заданной позиции.
countries = ("Russia", "USA", "France", "Germany", "Japan")
print(countries)
# Просим число (индекс) и показываем страну.
index = int(input("Введите число: "))
print(countries[index])
Задача 071: Список спорта
Создайте список с названиями двух видов спорта. Предложите пользователю ввести свой любимый вид спорта и добавьте его в конец списка. Отсортируйте список и выведите его.
# Список — рюкзак со спортами.
sports = ["football", "basketball"]
# Добавляем любимый.
favorite = input("Ваш любимый вид спорта: ")
sports.append(favorite)
# Сортируем и показываем.
sports.sort()
print(sports)
Задача 072: Школьные предметы
Создайте список с названиями шести школьных предметов. Спросите у пользователя, какие из этих предметов ему не нравятся. Удалите выбранные предметы из списка и выведите его повторно.
subjects = ["math", "english", "science", "history", "art", "PE"]
print(subjects)
# Сколько не нравятся.
num = int(input("Сколько предметов не нравятся? "))
# Удаляем по одному.
for i in range(num):
dislike = input("Какой не нравится: ")
subjects.remove(dislike)
# Показываем оставшиеся.
print(subjects)
Задача 073: Любимые блюда
Предложите пользователю ввести названия четырех любимых блюд и сохраните их в словаре с числовыми индексами, начиная с 1. Выведите содержимое словаря с указанием индексов и элементов. Спросите пользователя, какой элемент он хочет исключить, и удалите его из списка. Отсортируйте оставшиеся данные и выведите содержимое словаря.
# Словарь — книга с блюдами.
foods = {}
# Добавляем 4.
for i in range(1, 5):
food = input("Любимое блюдо: ")
foods[i] = food
# Показываем.
print(foods)
# Удаляем.
remove = int(input("Какой исключить (номер): "))
del foods[remove]
# Сортируем ключи и показываем.
sorted_foods = sorted(foods.items())
print(dict(sorted_foods))
Задача 074: Список цветов, срез
Введите список из десяти цветов. Предложите пользователю ввести начальное число в диапазоне от 0 до 4 и конечное число в диапазоне от 5 до 9. Выведите список цветов из интервала, заданного начальным и конечным числом.
colors = ["red", "blue", "green", "yellow", "purple", "orange", "pink", "black", "white", "brown"]
start = int(input("Начальное число (0-4): "))
end = int(input("Конечное число (5-9): "))
# Срез [start:end+1], потому что end не включается.
print(colors[start:end+1])
Задача 075: Проверка числа в списке
Создайте список из четырех трехзначных чисел. Выведите содержимое списка, при этом каждый элемент должен выводиться на отдельной строке. Предложите пользователю ввести число из трех цифр. Если введенное число совпадает с одним из чисел в списке, выведите позицию этого числа; в противном случае выведите сообщение «That is not in the list».
nums = [123, 456, 789, 321]
# Выводим по одному.
for num in nums:
print(num)
# Проверяем.
guess = int(input("Введите трехзначное число: "))
if guess in nums:
print(nums.index(guess))
else:
print("That is not in the list")
Задача 076: Приглашения
Предложите пользователю ввести имена трех людей, которых он хочет пригласить на вечеринку, и сохраните их в списке. После того как будут введены все три числа, спросите, хочет ли пользователь добавить еще одно имя. Если ответ будет положительным, предложите ему добавлять имена, пока не получите ответ «no». После ответа «no» выведите количество людей, приглашенных на вечеринку.
guests = []
# Первые 3.
for i in range(3):
name = input("Имя приглашенного: ")
guests.append(name)
# Добавляем еще?
add = "yes"
while add == "yes":
add = input("Добавить еще? (yes/no): ").lower()
if add == "yes":
name = input("Имя: ")
guests.append(name)
# Количество.
print(len(guests))
Задача 077: Удаление из списка гостей
Измените программу 076, чтобы после ввода списка имен программа выводила полный список. Предложите пользователю ввести одно из имен в списке и выведите позицию имени в списке. Спросите, хочет ли пользователь, чтобы этот человек присутствовал на вечеринке. Если пользователь ответит «no», удалите элемент из списка и снова выведите список.
guests = []
for i in range(3):
name = input("Имя: ")
guests.append(name)
add = "yes"
while add == "yes":
add = input("Добавить? (yes/no): ").lower()
if add == "yes":
name = input("Имя: ")
guests.append(name)
# Показываем список.
print(guests)
# Ищем имя.
name = input("Введите имя из списка: ")
print(guests.index(name))
# Удалить?
remove = input("Присутствовать? (yes/no): ").lower()
if remove == "no":
guests.remove(name)
# Новый список.
print(guests)
Задача 078: Телевизионные передачи
Создайте список с названиями четырех телевизионных передач и выведите их на отдельных строках. Предложите пользователю ввести название еще одной передачи и позицию, на которой она должна быть вставлена в список. Снова выведите список, в котором все пять передач находятся на новых позициях.
shows = ["Show1", "Show2", "Show3", "Show4"]
# Выводим по одному.
for show in shows:
print(show)
# Добавляем в позицию.
new_show = input("Новое название: ")
position = int(input("Позиция: "))
shows.insert(position, new_show)
# Новый список.
for show in shows:
print(show)
Задача 079: Список чисел с удалением
Создайте пустой список с именем nums. Предложите пользователю последовательно вводить числа. После ввода каждого числа добавьте его в конец списка nums и выведите список. После того как пользователь введет три числа, спросите, хочет ли он оставить последнее введенное число в списке. Если пользователь ответит «no», удалите последний элемент из списка. Выведите список.
nums = []
# Вводим 3 числа.
for i in range(3):
num = int(input("Введите число: "))
nums.append(num)
print(nums)
# Оставить последнее?
keep = input("Оставить последнее? (yes/no): ").lower()
if keep == "no":
nums.pop() # Удаляем последний.
print(nums)
Приключения в Мире Python: Учим Строки через Истории
Приключения в Мире Python: Учим Строки через Истории
Привет, юный программист! Представь, что Python — это волшебный мир, где слова и буквы оживают, как в сказке. Мы будем учить, как работать со строками (это как цепочки из букв и слов), через веселые истории. Сначала я расскажу теорию как сказку, с примерами, которые поймет даже ребенок. Потом будут задачи, а чтобы увидеть решение, введи секретный код "123" в поле и нажми кнопку. Готов? Поехали!
Теория: Строки — это как Волшебные Цепочки Бусин
Жил-был маленький эльф по имени Пайтон. У него была волшебная цепочка из бусин — каждая бусина была буквой или символом. Эта цепочка называется "строкой" в Python. Пайтон мог измерять длину цепочки (len()), резать ее на кусочки (slicing), менять буквы на большие или маленькие (upper(), lower()), соединять цепочки (конкатенация с +), и даже переворачивать их!
Аллегория: Представь, что строка — это нитка с бусинками-буковками. Ты можешь посчитать, сколько бусинок (len("apple") = 5), взять кусочек с 1-й по 3-ю бусинку ("apple"[0:3] = "app" — помни, счет начинается с 0, как в очереди: первая бусина — позиция 0). Если буковки кричат громко (верхний регистр), то upper() делает все большими, lower() — маленькими. А чтобы соединить две нитки, просто + их вместе: "hello" + " " + "world" = "hello world".
Пайтон любил играть с вводом от друзей: input() — это как спросить "Что ты хочешь сказать?" и сохранить в переменную, как в коробочку.
Если pass1.lower() == pass2.lower() но не одинаковый регистр: "They must be in the same case"
Иначе: "Incorrect" — злой дракон не пускает.
Теперь, когда ты понял теорию через историю Пайтона, давай решим задачи. Каждая — как приключение. Решение спрятано за кодом "123".
Задача 080: Имя и Фамилия — Соединяем Цепочки
Предложите пользователю ввести свое имя, а затем выведите длину имени. Запросите фамилию и выведите длину фамилии. Соедините имя с фамилией, разделив их пробелом, и выведите результат. Наконец, выведите длину полного имени (включая пробел).
name = input("Введите ваше имя: ") # Просим ввести имя, как эльф просит бусины для цепочки
print(len(name)) # Выводим длину — сколько бусин в имени
surname = input("Введите вашу фамилию: ") # Теперь фамилия — вторая цепочка
print(len(surname)) # Длина второй цепочки
full_name = name + " " + surname # Соединяем цепочки с пробелом, как нитки с узелком
print(full_name) # Показываем полную цепочку
print(len(full_name)) # Длина всей цепочки, включая пробел-узелок
Комментарии: Здесь мы используем input() для ввода, len() для длины, и + для соединения строк. Пробел — это тоже бусина!
Задача 081: Любимый Предмет с Дефисами
Предложите пользователю ввести его любимый школьный предмет. Выведите его так, чтобы после каждой буквы следовал дефис — например, S-p-a-n-i-s-h-.
subject = input("Введите ваш любимый школьный предмет: ") # Вводим слово, как собираем бусины
dashed = "-".join(subject) + "-" # join() вставляет дефис между каждой бусиной, и добавляем в конец
print(dashed) # Показываем цепочку с дефисами, как украшенную
Комментарии: join() — волшебный клей, который вставляет "-" между буквами. Для "Math" получится M-a-t-h-.
Задача 082: Кусочек Стихотворения
Выведите строку из своего любимого стихотворения и предложите пользователю ввести начальную и конечную позицию. Выведите символы, находящиеся между ними.
poem = "Twinkle, twinkle, little star" # Строка из стиха — наша цепочка
print(poem) # Показываем всю
start = int(input("Введите начальную позицию: ")) # Просим номер первой бусины (с 0)
end = int(input("Введите конечную позицию: ")) # Номер после последней
print(poem[start:end]) # Режем цепочку — slicing, как ножницами
Комментарии: Slicing [start:end] берет кусочек. Не включает end. int() превращает ввод в число.
Задача 083: Только Верхний Регистр
Предложите пользователю ввести слово в верхнем регистре. Если не все буквы слова будут указаны в верхнем регистре, попросите ввести слово заново. Повторяйте попытки, пока пользователь не введет сообщение в верхнем регистре.
word = input("Введите слово в верхнем регистре: ") # Первый ввод
while not word.isupper(): # Пока не все буковки большие (isupper() проверяет)
word = input("Попробуйте заново: ") # Просим снова, как эльф учит терпению
print("Спасибо!") # Когда все большие — успех!
Комментарии: while — цикл, как повторяющаяся игра. isupper() — проверка, все ли буковки на цыпочках.
Задача 084: Первые Две Буквы Индекса
Предложите пользователю ввести его почтовый индекс. Выведите первые две буквы слова в верхнем регистре.
postcode = input("Введите ваш почтовый индекс: ") # Ввод цепочки
first_two = postcode[0:2].upper() # Берем первые две бусины и делаем большими
print(first_two) # Показываем
Комментарии: [0:2] — slicing первых двух. upper() — на цыпочки!
Задача 085: Считаем Гласные в Имени
Предложите пользователю ввести имя, а затем сообщите, сколько в нем гласных букв.
name = input("Введите ваше имя: ") # Ввод цепочки
vowels = "aeiouAEIOU" # Гласные буковки
count = 0 # Счетчик сокровищ
for char in name: # Проходим по каждой бусине
if char in vowels: # Если гласная
count += 1 # Добавляем
print(count) # Сколько нашли
Комментарии: for — как прогулка по цепочке. in проверяет, гласная ли бусина.
Задача 086: Проверка Пароля
Предложите пользователю ввести пароль, а затем предложите ввести его повторно. Если два пароля совпадут, выведите сообщение «Thank you». Если буквы введены правильно, но различаются регистром, выведите сообщение «They must be in the same case»; в противном случае выводится сообщение «Incorrect».
pass1 = input("Введите пароль: ") # Первый ключ
pass2 = input("Введите повторно: ") # Второй
if pass1 == pass2: # Совпадают полностью
print("Thank you")
elif pass1.lower() == pass2.lower(): # Буквы те же, но регистр разный
print("They must be in the same case")
else: # Не совпадают
print("Incorrect")
Комментарии: if-elif-else — как выбор пути в приключении. lower() игнорирует размер буковок для проверки.
Задача 087: Буквы в Обратном Порядке
Предложите пользователю ввести слово, а затем выведите буквы слова в обратном порядке в разных строках.
word = input("Введите слово: ") # Цепочка
for char in reversed(word): # Проходим в обратном порядке, как зеркало
print(char) # Каждая бусина на новой строке
Комментарии: reversed() переворачивает цепочку. for печатает по одной.
Приключения в Мире Python: Учим Массивы через Истории
Приключения в Мире Python: Учим Массивы через Истории
Привет, юный программист! Теперь представь, что Python — это волшебный мир, где числа и вещи хранятся в специальных коробках, как игрушки в ящике. Эти коробки называются "массивами" (arrays). Мы будем учить, как работать с массивами, через веселые истории. Сначала я расскажу теорию как сказку, с примерами, которые поймет даже ребенок. Потом будут задачи, а чтобы увидеть решение, введи секретный код "123" в поле и нажми кнопку. Готов? Поехали!
Теория: Массивы — это как Волшебные Ящики с Игрушками
Жил-был эльф Пайтон, который любил собирать числа в специальные ящики — массивы. Массив — это как ряд коробочек, где каждая хранит одно число или вещь. Чтобы использовать массивы, Пайтон всегда говорил волшебное заклинание: from array import * — это открывает дверь в библиотеку массивов.
Аллегория: Представь массив как поезд с вагонами: каждый вагон — элемент, с номером начиная с 0. Ты можешь добавлять вагоны (append), убирать (pop, remove), переворачивать поезд (reverse), сортировать по размеру (sorted), считать, сколько раз повторяется игрушка (count), или объединять два поезда (extend).
Пайтон мог просить друзей добавлять числа: input() — как спросить "Положи игрушку в ящик!" и сохранять в массив.
Яркий Пример: Создание Массива
from array import * # Волшебное заклинание для массивов
nums = array('i', [45, 324, 654, 45, 264]) # Создаем поезд с целыми числами ('i' — для целых)
print(nums) # Показываем: array('i', [45, 324, 654, 45, 264])
Здесь 'i' значит, что в вагонах только целые числа, как только красные машинки.
Вывод Элементов
for x in nums: # Проходим по каждому вагону
print(x) # Выводим каждое число в отдельной строке
Как будто открываем каждый ящик и показываем, что внутри.
Добавление Элемента
newValue = int(input("Enter number: ")) # Просим новое число
nums.append(newValue) # Добавляем в конец поезда
Append — как прицепить новый вагон сзади.
Переворот и Сортировка
nums.reverse() # Переворачиваем поезд
nums = sorted(nums) # Сортируем по возрастанию, как расставить по росту
Reverse — зеркало для поезда, sorted — упорядочивает.
Удаление
nums.pop() # Убираем последний вагон
Pop — как отцепить хвост.
Создание и Объединение
newArray = array('i', []) # Пустой поезд
more = int(input("How many items: ")) # Сколько вагонов добавить?
for y in range(0, more):
newValue = int(input("Enter num: "))
newArray.append(newValue)
nums.extend(newArray) # Объединяем два поезда
Extend — прицепляем один поезд к другому.
Удаление по Значению
getRid = int(input("Enter item index: ")) # В сообщении опечатка, но по коду — значение, не индекс
nums.remove(getRid) # Удаляем первое совпадение
Remove — ищем и убираем конкретную игрушку.
Подсчет
print(nums.count(45)) # Сколько раз 45 в поезде?
Count — считаем повторения.
Теперь, когда ты понял теорию через историю Пайтона, давай решим задачи. Каждая — как приключение. Решение спрятано за кодом "123".
Задача 088: Пять Чисел, Сортировка и Обратный Порядок
Предложите пользователю ввести пять целых чисел и сохраните их в массиве. Отсортируйте список и выведите его содержимое в обратном порядке.
from array import * # Импорт для массивов
nums = array('i', []) # Пустой массив
for i in range(5): # Пять раз просим число
num = int(input("Введите целое число: "))
nums.append(num)
nums = sorted(nums) # Сортируем по возрастанию
nums.reverse() # Переворачиваем для обратного порядка
print(nums) # Выводим
Комментарии: Собираем пять чисел в массив, сортируем, переворачиваем и показываем.
Задача 089: Случайные Числа
Создайте массив для хранения целых чисел. Сгенерируйте пять случайных чисел и сохраните их в массиве. Выведите массив (каждый элемент должен выводиться в отдельной строке).
from array import *
import random # Для случайных чисел
nums = array('i', []) # Пустой массив
for i in range(5): # Генерируем пять случайных
rand_num = random.randint(1, 100) # Например, от 1 до 100
nums.append(rand_num)
for x in nums: # Выводим по строкам
print(x)
Комментарии: random.randint для случайностей, append добавляет, for выводит по одному.
Задача 090: Числа от 10 до 20
Предложите пользователю вводить целые числа. Если пользователь вводит число от 10 до 20, сохраните его в массиве; в противном случае выведите сообщение «Outside the range». После того как пять чисел будут успешно добавлены в массив, выведите сообщение «Thank you» и выведите массив, каждый элемент которого находился бы на отдельной строке.
from array import *
nums = array('i', []) # Пустой
count = 0 # Счетчик добавленных
while count < 5: # Пока не пять
num = int(input("Введите целое число: "))
if 10 <= num <= 20: # В диапазоне
nums.append(num)
count += 1
else:
print("Outside the range")
print("Thank you")
for x in nums: # Вывод по строкам
print(x)
Комментарии: while для повторения, if проверяет диапазон, append только подходящие.
Задача 091: Подсчет Повторений
Создайте массив, содержащий пять чисел (два из которых должны повторяться). Выведите весь массив. Предложите пользователю ввести одно из чисел массива, после чего выведите сообщение, в котором указано, сколько раз число встречается в этом массиве.
from array import *
nums = array('i', [1, 2, 2, 3, 4]) # С повторениями
print(nums) # Выводим
user_num = int(input("Введите одно из чисел: "))
print(nums.count(user_num)) # Считаем и выводим
Комментарии: count() считает повторения выбранного числа.
Задача 092: Два Массива и Объединение
Создайте два массива: один будет содержать три числа, введенных пользователем, а другой — пять случайных чисел. Объедините эти два массива в один большой. Отсортируйте и выведите его, при этом каждое число должно выводиться в отдельной строке.
from array import *
import random
user_array = array('i', []) # Пользовательский
for i in range(3):
num = int(input("Введите число: "))
user_array.append(num)
rand_array = array('i', []) # Случайный
for i in range(5):
rand_array.append(random.randint(1, 100))
big_array = array('i', []) # Большой
big_array.extend(user_array) # Объединяем
big_array.extend(rand_array)
big_array = sorted(big_array) # Сортируем
for x in big_array: # По строкам
print(x)
Комментарии: extend для объединения, sorted сортирует.
Задача 093: Удаление в Новый Массив
Предложите пользователю ввести пять чисел. Отсортируйте их и выведите для пользователя. Предложите выбрать одно из чисел. Удалите выбранное число из исходного массива и сохраните его в новом.
from array import *
nums = array('i', []) # Исходный
for i in range(5):
num = int(input("Введите число: "))
nums.append(num)
nums = sorted(nums) # Сортируем
print(nums) # Показываем
choice = int(input("Выберите одно из чисел: "))
nums.remove(choice) # Удаляем из исходного
new_nums = array('i', [choice]) # Новый с выбранным
print(new_nums) # Можно вывести, если нужно
Комментарии: remove удаляет, новый массив сохраняет удаленное.
Задача 094: Выбор по Индексу
Выведите массив из пяти чисел. Предложите пользователю выбрать одно из них. После того как число будет выбрано, выведите его позицию в массиве. Если пользователь введет значение, отсутствующее в массиве, предложите ему выбрать снова, пока не будет выбрано допустимое значение.
from array import *
nums = array('i', [10, 20, 30, 40, 50]) # Пример массива
print(nums) # Показываем
while True: # Пока не верно
choice = int(input("Выберите одно из чисел: "))
if choice in nums: # Если есть
print(nums.index(choice)) # Выводим позицию (индекс)
break
else:
print("Выберите снова")
Комментарии: index() дает позицию, in проверяет наличие, while для повторений.
Задача 095: Деление с Проверкой
Создайте массив из пяти чисел от 10 до 100, каждое из которых содержит два знака в дробной части. Предложите пользователю ввести целое число от 2 до 5. Если пользователь введет значение, выходящее за границы диапазона, выведите сообщение об ошибке и предложите выбрать снова, пока не будет введено допустимое значение. Разделите каждое из чисел в массиве на число, введенное пользователем, и выведите ответы с точностью до двух знаков.
from array import *
# Для дробных используем 'f'
nums = array('f', [12.34, 56.78, 90.12, 34.56, 78.90]) # Пример с дробными
while True: # Проверка ввода
divisor = int(input("Введите число от 2 до 5: "))
if 2 <= divisor <= 5:
break
else:
print("Ошибка, попробуйте снова")
for num in nums: # Делим и выводим с 2 знаками
result = num / divisor
print(round(result, 2))
Комментарии: 'f' для float, round для двух знаков, while для проверки диапазона.
Приключения в Мире Python: Учим Двумерные Списки и Словари через Истории
Приключения в Мире Python: Учим Двумерные Списки и Словари через Истории
Привет, юный программист! Теперь представь, что Python — это волшебный мир, где числа и данные хранятся в больших таблицах, как в сокровищнице с полками и ящиками. Эти таблицы называются "двумерными списками" или "словарями". Мы будем учить, как работать с ними, через веселые истории. Сначала я расскажу теорию как сказку, с примерами, которые поймет даже ребенок. Потом будут задачи, а чтобы увидеть решение, введи секретный код "123" в поле и нажми кнопку. Готов? Поехали!
Теория: Двумерные Списки и Словари — это как Волшебные Таблицы Сокровищ
Эльф Пайтон теперь собирал сокровища в большой таблице — как шахматная доска, где каждая клетка держит число или слово. Это "двумерный список" — список списков, с рядами (строками) и колонками (столбцами). Счет начинается с 0, как в предыдущих приключениях. А словари — это таблицы с именами для рядов и колонок, как ярлыки на ящиках, чтобы легко находить.
Аллегория: Двумерный список — как карта сокровищ с координатами: ряд 0, колонка 1 — там лежит монета. Ты можешь менять сокровища, добавлять новые, или удалять. Словари — как именованная карта: "Сокровище Джона в регионе Север" — легко найти по имени.
Пайтон мог просить друзей заполнять таблицу: input() — как спросить "Что положить в эту клетку?"
Комментарии: input для координат, двойные [] для доступа.
Задача 098: Добавление в Строку
Используя двумерный список из задачи 096, предложите пользователю выбрать строку и выведите только ее. Предложите ввести новое значение, добавьте его в конец строки, после чего снова выведите измененную строку.
simple_array = [[2, 5, 8], [3, 7, 4], [1, 6, 9], [4, 2, 0]] # Таблица
row = int(input("Выберите строку (0-3): ")) # Просим ряд
print(simple_array[row]) # Показываем ряд
new_val = int(input("Введите новое значение: ")) # Просим новое
simple_array[row].append(new_val) # Добавляем в конец
print(simple_array[row]) # Показываем измененный
Комментарии: append добавляет в конец выбранного ряда.
Задача 099: Изменение Значения
Измените программу из задачи 098. Предложите пользователю выбрать строку и выведите только ее. Предложите выбрать столбец из выведенной строки и выведите только хранящееся там значение. Спросите, хочет ли пользователь изменить его. Если ответ будет положительным, предложите ввести новое значение и измените данные. Наконец, снова выведите измененную строку.
Комментарии: Имена — ключи рядов, регионы — ключи колонок.
Задача 101: Работа с Продажами
Используя программу из задачи 100, запросите у пользователя имя и регион. Выведите соответствующие данные. Запросите у пользователя имя и регион того значения, которое он хочет изменить, и позвольте скорректировать объем продаж. Выведите объемы продаж по всем регионам для имени, выбранного пользователю.
sales = {
"John": {"N": 3056, "S": 8463, "E": 8441, "W": 2694},
"Tom": {"N": 4832, "S": 6786, "E": 4737, "W": 3612},
"Anna": {"N": 5239, "S": 4802, "E": 5820, "W": 1859},
"Fiona": {"N": 3904, "S": 3645, "E": 8821, "W": 2451}
}
name = input("Введите имя: ") # Просим имя
region = input("Введите регион (N/S/E/W): ") # Регион
print(sales[name][region]) # Выводим
change_name = input("Имя для изменения: ") # Для изменения
change_region = input("Регион для изменения: ")
new_sales = int(input("Новое значение: "))
sales[change_name][change_region] = new_sales # Меняем
print(sales[change_name]) # Выводим все регионы для имени
Комментарии: Доступ по ключам, присвоение для изменения.
Задача 102: Данные о Людях
Предложите пользователю ввести имя, возраст и размер обуви для четырех человек. Запросите имя одного из них в списке и выведите значения его возраста и размера обуви.
people = [] # Список словарей
for i in range(4): # Для четырех
name = input("Имя: ")
age = int(input("Возраст: "))
shoe = int(input("Размер обуви: "))
people.append({"name": name, "age": age, "shoe": shoe})
search_name = input("Введите имя для поиска: ") # Просим имя
for person in people: # Ищем
if person["name"] == search_name:
print("Возраст:", person["age"], "Размер обуви:", person["shoe"])
Комментарии: Список словарей для рядов, цикл для поиска.
Задача 103: Вывод Имен и Возрастов
Измените программу 102, чтобы она выводила имя и возраст для всех людей в списке, но не их размер обуви.
people = [] # Список
for i in range(4):
name = input("Имя: ")
age = int(input("Возраст: "))
shoe = int(input("Размер обуви: "))
people.append({"name": name, "age": age, "shoe": shoe})
for person in people: # Выводим все
print("Имя:", person["name"], "Возраст:", person["age"])
Комментарии: for для прохода, печатаем только имя и возраст.
Задача 104: Удаление Человека
После получения имени, возраста и размера обуви для четырех человек запросите у пользователя имя человека для удаления из списка. Удалите эту строку и выведите остальные данные с разбивкой по строкам.
people = [] # Список
for i in range(4):
name = input("Имя: ")
age = int(input("Возраст: "))
shoe = int(input("Размер обуви: "))
people.append({"name": name, "age": age, "shoe": shoe})
del_name = input("Имя для удаления: ") # Просим
for i, person in enumerate(people): # Ищем индекс
if person["name"] == del_name:
del people[i] # Удаляем по индексу
break
for person in people: # Выводим оставшихся
print(person)
Комментарии: enumerate для индекса, del по индексу, print по строкам.
Приключения в Мире Python: Учим Файлы через Истории
Приключения в Мире Python: Учим Файлы через Истории
Привет, юный программист! Теперь представь, что Python — это волшебный мир, где информация хранится в специальных книгах или сундуках, которые можно открывать, читать и писать. Эти книги называются "файлами". Мы будем учить, как работать с файлами, через веселые истории. Сначала я расскажу теорию как сказку, с примерами, которые поймет даже ребенок. Потом будут задачи, а чтобы увидеть решение, введи секретный код "123" в поле и нажми кнопку. Готов? Поехали!
Теория: Файлы — это как Волшебные Книги Секретов
Эльф Пайтон любил хранить свои секреты в волшебных книгах — файлах. Чтобы открыть книгу, он использовал open(), с режимом "w" для письма новой книги (заменяет старую), "r" для чтения, "a" для добавления в конец. После письма или чтения книгу нужно закрыть close(), чтобы секреты сохранились. Write() — писать строки, read() — читать все сразу.
Аллегория: Файл — как книга: open("book.txt", "w") — создать новую пустую книгу и писать в нее. Если книга уже есть, "w" стирает старое. "a" — добавить страницы в конец без стирания. "r" — открыть и прочитать, но не менять. \n — как новая строка в книге.
Пайтон мог просить друзей писать в книгу: input() — как спросить "Что записать в книгу?" и write() это.
Яркий Пример: Создание и Запись в Файл
file = open("Countries.txt", "w") # Открываем новую книгу для письма
file.write("Italy\n") # Пишем строку
file.write("Germany\n")
file.write("Spain\n")
file.close() # Закрываем, чтобы сохранить
Создает файл Countries.txt с тремя странами по строкам.
Чтение Файла
file = open("Countries.txt", "r") # Открываем для чтения
print(file.read()) # Читаем и выводим все
file.close() # Закрываем
Выводит содержимое книги.
Добавление в Файл
file = open("Countries.txt", "a") # Открываем для добавления
file.write("France\n") # Добавляем в конец
file.close() # Сохраняем
Добавляет новую строку без стирания старого.
Теперь, когда ты понял теорию через историю Пайтона, давай решим задачи. Каждая — как приключение. Решение спрятано за кодом "123".
Задача 105: Создание Файла с Числами
Создайте новый файл с именем Numbers.txt. Добавьте в него пять чисел, которые хранятся в одной строке и разделяются только запятыми. После запуска программы найдите папку, в которой располагается ваша программа; убедитесь в том, что файл был создан.
file = open("Numbers.txt", "w") # Открываем новую книгу для чисел
file.write("1,2,3,4,5") # Пишем все в одной строке с запятыми
file.close() # Закрываем и сохраняем
Комментарии: write() пишет строку с числами, разделенными запятыми. Нет \n, так как одна строка.
Задача 106: Создание Файла с Именами
Создайте новый файл с именем Names.txt. Добавьте в него пять имен, отображающихся на разных строках. После запуска программы найдите папку, в которой располагается ваша программа; убедитесь в том, что файл был создан.
file = open("Names.txt", "w") # Новая книга для имен
file.write("Alice\n") # Каждое имя на новой строке
file.write("Bob\n")
file.write("Charlie\n")
file.write("David\n")
file.write("Eve\n")
file.close() # Сохраняем
Комментарии: \n делает новую строку для каждого имени.
Задача 107: Вывод Содержимого Файла
Откройте файл Names.txt и выведите данные из кода Python.
file = open("Names.txt", "r") # Открываем для чтения
print(file.read()) # Выводим все содержимое
file.close() # Закрываем
Комментарии: read() читает весь текст как строку и print показывает.
Задача 108: Добавление Имени и Вывод
Откройте файл Names.txt. Предложите пользователю ввести новое имя. Добавьте его в конец файла и выведите все содержимое файла.
new_name = input("Введите новое имя: ") # Просим имя
file = open("Names.txt", "a") # Открываем для добавления
file.write(new_name + "\n") # Добавляем с новой строкой
file.close() # Сохраняем
file = open("Names.txt", "r") # Открываем для чтения
print(file.read()) # Выводим все
file.close()
Комментарии: "a" для append, + "\n" для новой строки, затем читаем и показываем.
Задача 109: Меню для Файла Subject.txt
Выведите меню: 1) Create a new file 2) Display the file 3) Add a new item to the file. Обработайте выбор, с ошибкой для неверного. Для 1: ввести предмет, создать Subject.txt. Для 2: вывести содержимое. Для 3: добавить новый, вывести все.
print("1) Create a new file")
print("2) Display the file")
print("3) Add a new item to the file")
choice = input("Make a selection 1, 2 or 3: ") # Просим выбор
if choice == "1":
subject = input("Название школьного предмета: ")
file = open("Subject.txt", "w") # Создаем новый
file.write(subject + "\n")
file.close()
elif choice == "2":
file = open("Subject.txt", "r") # Читаем
print(file.read())
file.close()
elif choice == "3":
new_subject = input("Новый предмет: ")
file = open("Subject.txt", "a") # Добавляем
file.write(new_subject + "\n")
file.close()
file = open("Subject.txt", "r") # Выводим
print(file.read())
file.close()
else:
print("Ошибка: неверный выбор")
Комментарии: if-elif для меню, обработка каждого случая с open в нужном режиме.
Задача 110: Удаление Имени и Новый Файл
С помощью созданного ранее файла Names.txt выведите список имен в Python. Попросите пользователя ввести одно из имен, а затем сохраните все, кроме выбранного в новом файле, под названием Names2.txt.
file = open("Names.txt", "r") # Читаем оригинал
names = file.read().splitlines() # Разбиваем на список имен
file.close()
print(names) # Выводим список
del_name = input("Введите имя для удаления: ") # Просим имя
new_file = open("Names2.txt", "w") # Новый файл
for name in names: # Проходим по списку
if name != del_name: # Если не то, пишем
new_file.write(name + "\n")
new_file.close()
Комментарии: splitlines() делает список из строк, for и if фильтруют, write в новый файл.
Изучаем Python: Волшебное приключение в мире кода — Часть 8: Черепашка-художница!
Волшебное приключение в мире Python: Черепашка-художница рисует чудеса!
Эй, маленький художник Кодик! В глубине волшебного леса Python живет забавная черепашка по имени Тертл. Она — настоящая художница! У нее на спине карандаш, и когда она ползет по бумаге, оставляет яркий след, как улитка слизь, но красивее. Ты — ее лучший друг, и можешь командовать: "Ползи вперед 50 шагов!" — и она рисует прямую линию. "Поверни налево на 90 градусов!" — и она меняет направление, как машинка на пульте.
Чтобы позвать Тертл, скажи заклинание: import turtle — это как открыть дверь в ее домик. Затем создай экран: scr = turtle.Screen() — большой холст для рисунков. Сделай фон желтым: scr.bgcolor("yellow") — как солнышко светит. Толщину карандаша: turtle.pensize(3) — толстый след, как фломастер. Подними карандаш: turtle.penup() — ползи без следа, как призрак. Опустить: turtle.pendown() — рисуй!
Повороты: turtle.left(120) — налево, как в танце. turtle.right(90) — направо. Ползи: turtle.forward(50) — шагай! Спрячь черепашку: turtle.hideturtle() — невидимка. Сделай ее черепахой: turtle.shape("turtle") — милая форма. Заполни фигуру: turtle.begin_fill() и turtle.end_fill() — как раскрашивать внутри. Цвета: turtle.color("black", "red") — контур черный, внутри красный.
Когда закончишь: turtle.exitonclick() — кликни, чтобы закрыть. Тертл любит циклы — повторяй команды, чтобы рисовать звезды или домики, как повторять шаги в игре. Давай порисуем вместе! Каждая задача — новое картина. Решения спрятаны за кодом "123". Введи, и увидишь волшебный код с объяснениями, как Тертл шепчет секреты.
Готов взять карандаш? Начинаем!
Задача 060: Нарисуйте квадрат
Нарисуйте квадрат.
import turtle # Зовем черепашку.
# Цикл для 4 сторон квадрата, как 4 шага по кругу.
for i in range(4):
turtle.forward(100) # Ползи вперед 100 шагов.
turtle.right(90) # Поверни направо на 90 градусов.
turtle.exitonclick() # Жди клика, чтобы закрыть.
Задача 061: Нарисуйте треугольник
Нарисуйте треугольник.
import turtle
# Для треугольника 3 стороны, поворот на 120 градусов.
for i in range(3):
turtle.forward(100)
turtle.left(120) # Налево, потому что внешний угол.
turtle.exitonclick()
Задача 062: Нарисуйте круг
Нарисуйте круг.
import turtle
# Круг — много маленьких шагов с поворотом.
turtle.circle(50) # Просто команда для круга радиусом 50.
turtle.exitonclick()
Задача 063: Три квадрата в ряд
Нарисуйте в один ряд три квадрата, разделенных промежутками. Заполните их тремя разными цветами.
import turtle
colors = ["red", "green", "blue"] # Цвета для заливки.
for color in colors: # Для каждого цвета.
turtle.color("black", color) # Контур черный, заливка цвет.
turtle.begin_fill()
for i in range(4): # Квадрат.
turtle.forward(50)
turtle.right(90)
turtle.end_fill()
turtle.penup() # Подними, чтобы перейти.
turtle.forward(60) # Промежуток.
turtle.pendown()
turtle.exitonclick()
Задача 064: Пятиконечная звезда
Нарисуйте пятиконечную звезду.
import turtle
# Звезда: 5 углов, поворот 144 градуса.
for i in range(5):
turtle.forward(100)
turtle.right(144)
turtle.exitonclick()
Задача 065: Нарисуйте цифры
Нарисуйте цифры, изображенные ниже, начиная от нижней точки цифры 1.
import turtle
# Предполагаем нарисовать 1,2,3 линиями.
# 1: вертикальная линия от низа.
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
turtle.left(90)
turtle.forward(100)
# Переход к 2.
turtle.penup()
turtle.goto(50, 0)
turtle.pendown()
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
# Переход к 3.
turtle.penup()
turtle.goto(150, 0)
turtle.pendown()
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.penup()
turtle.backward(50)
turtle.pendown()
turtle.left(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.exitonclick()
Задача 066: Восьмиугольник с цветами
Нарисуйте восьмиугольник, все стороны которого окрашены в разные цвета (случайно выбираемые из списка шести возможных цветов).
import turtle
import random
colors = ["red", "green", "blue", "yellow", "purple", "orange"] # 6 цветов.
for i in range(8): # 8 сторон.
color = random.choice(colors) # Случайный цвет.
turtle.pencolor(color) # Цвет пера.
turtle.forward(50)
turtle.right(45) # 360/8 = 45.
turtle.exitonclick()
Задача 067: Узор
Нарисуйте следующий узор.
import turtle
t = turtle.Turtle()
wn = turtle.Screen()
t.speed(10)
t.pensize(2)
t.color('blue')
wn.bgcolor('lightgreen')
def drawSquare(t, sz):
for i in range(4):
t.forward(sz)
t.left(90)
def drawGrid(t, sz):
for i in range(4):
drawSquare(t, sz)
t.left(90)
for i in range(5):
drawGrid(t, 100)
t.left(18)
turtle.exitonclick()
Задача 068: Случайный узор
Нарисуйте узор, который меняется при каждом запуске программы. Используйте функцию random для выбора количества линий, длины каждой линии и каждого угла.
import turtle
import random
t = turtle.Turtle()
t.speed(10)
num_lines = random.randint(5, 20) # Случайное количество линий.
for i in range(num_lines):
length = random.randint(20, 100) # Длина.
angle = random.randint(0, 360) # Угол.
t.forward(length)
t.right(angle)
turtle.exitonclick()
Приключения в Мире Python: Учим CSV Файлы через Истории
Приключения в Мире Python: Учим CSV Файлы через Истории
Привет, юный программист! Теперь представь, что Python — это волшебный мир, где таблицы с данными хранятся в специальных книгах, разделенных запятыми, как секреты в дневнике. Эти книги называются "CSV файлами". Мы будем учить, как работать с CSV, через веселые истории. Сначала я расскажу теорию как сказку, с примерами, которые поймет даже ребенок. Потом будут задачи, а чтобы увидеть решение, введи секретный код "123" в поле и нажми кнопку. Готов? Поехали!
Теория: CSV Файлы — это как Волшебные Таблицы в Книгах
Эльф Пайтон теперь хранил свои списки звезд и имен в специальных таблицах-книгах, где каждая строка — запись, а столбцы разделены запятыми. Это CSV! Чтобы работать с ними правильно, он всегда говорил заклинание import csv. Затем open() для открытия книги, write() для записи, но лучше использовать csv.writer для аккуратных таблиц. Для чтения — csv.reader, чтобы читать как список рядов.
Аллегория: CSV — как книга с таблицей: строки — записи о людях или вещах, запятые — стенки между ячейками. "w" — новая книга, "a" — добавить в конец, "r" — читать. Reader — волшебные очки, чтобы видеть таблицу как список списков, а не просто текст.
Пайтон мог просить друзей добавлять в таблицу: input() — как спросить "Расскажи о себе!" и записать в CSV.
Яркий Пример: Создание и Запись в CSV
import csv # Заклинание для CSV
file = open("Stars.csv", "w") # Открываем новую таблицу
newRecord = "Brian,73,Taurus\n" # Строка с запятыми
file.write(newRecord) # Пишем
file.close() # Сохраняем
Создает Stars.csv с одной записью.
Добавление Записи
import csv
file = open("Stars.csv", "a") # Добавляем в конец
name = input("Enter name: ")
age = input("Enter age: ")
star = input("Enter star sign: ")
newRecord = name + "," + age + "," + star + "\n"
file.write(newRecord)
file.close()
Просит данные и добавляет строку.
Чтение CSV
import csv
file = open("Stars.csv", "r") # Чтение
for row in file: # По строкам
print(row)
Выводит каждую строку.
Чтение с Reader
import csv
file = open("Stars.csv", "r")
reader = csv.reader(file) # Волшебные очки
rows = list(reader) # В список
print(rows[1]) # Вторая строка как список
file.close()
Читает как список списков.
Поиск в CSV
import csv
file = open("Stars.csv", "r")
search = input("Enter the data you are searching for: ")
for row in file:
if search in row: # Проверяем в строке
print(row)
file.close()
Ищет и выводит строки с совпадением.
Чтение в Список и Запись в Новый
import csv
file = list(csv.reader(open("Stars.csv"))) # Читаем в список
tmp = []
for row in file:
tmp.append(row) # Копируем
# Изменяем tmp если нужно
file_out = open("NewStars.csv", "w")
writer = csv.writer(file_out) # Лучше использовать writer
for row in tmp:
writer.writerow(row) # Пишем ряд
file_out.close()
Копирует в список, затем пишет в новый CSV.
Теперь, когда ты понял теорию через историю Пайтона, давай решим задачи. Каждая — как приключение. Решение спрятано за кодом "123". Предполагаем, что Books.csv существует или создаем пример.
Задача 112: Добавление и Вывод Строк
Используя файл Books.csv из программы 111, предложите пользователю ввести новую запись и добавьте ее в конец файла. Выведите каждую строку файла .csv в отдельной строке.
import csv
# Предполагаем Books.csv существует, формат: Title,Author,Year
title = input("Введите название книги: ")
author = input("Введите автора: ")
year = input("Введите год: ")
new_record = title + "," + author + "," + year + "\n"
file = open("Books.csv", "a") # Добавляем
file.write(new_record)
file.close()
file = open("Books.csv", "r") # Читаем
for row in file: # Выводим по строкам
print(row.strip()) # strip() убирает \n
file.close()
Комментарии: input для новой записи, "a" для добавления, for для вывода строк.
Задача 113: Добавление Нескольких и Поиск по Автору
Используя файл Books.csv, спросите пользователя, сколько записей он хочет добавить в список, и предоставьте ему такую возможность. После того как данные будут добавлены, запросите автора и выведите все книги указанного автора из списка. Если в списке нет ни одной книги этого автора, выведите соответствующее сообщение.
import csv
num_add = int(input("Сколько записей добавить? ")) # Просим количество
file = open("Books.csv", "a") # Открываем для добавления
for _ in range(num_add): # Цикл
title = input("Название: ")
author = input("Автор: ")
year = input("Год: ")
file.write(title + "," + author + "," + year + "\n")
file.close()
search_author = input("Введите автора для поиска: ") # Просим автора
file = open("Books.csv", "r")
reader = csv.reader(file) # Reader для списков
found = False
for row in reader: # По рядам
if row[1] == search_author: # Автор во втором столбце
print(row[0]) # Выводим название
found = True
if not found:
print("Нет книг этого автора")
file.close()
Комментарии: for для добавления, reader для поиска, if для проверки автора.
Задача 114: Поиск по Годам
Используя файл Books.csv, предложите пользователю ввести начальный и конечный год. Выведите все книги, выпущенные в заданном промежутке времени.
import csv
start_year = int(input("Начальный год: ")) # Просим годы
end_year = int(input("Конечный год: "))
file = open("Books.csv", "r")
reader = csv.reader(file)
for row in reader: # По рядам
if len(row) > 2 and start_year <= int(row[2]) <= end_year: # Проверяем год
print(row[0]) # Выводим название
file.close()
Комментарии: int() для сравнения годов, if для диапазона.
Задача 115: Вывод с Нумерацией
Используя файл Books.csv, выведите данные с нумерацией строк.
import csv
file = open("Books.csv", "r")
reader = csv.reader(file)
for i, row in enumerate(reader, 1): # enumerate для нумерации с 1
print(f"{i}: {row}")
file.close()
Комментарии: enumerate добавляет номера, f-string для формата.
Задача 116: Редактирование CSV
Импортируйте данные из файла Books.csv в список. Выведите список, предложите пользователю выбрать, какую строку он хочет исключить, и удалите ее. Спросите пользователя, какие данные он хочет изменить, и предоставьте ему соответствующую возможность. Запишите данные обратно в файл .csv с заменой существующих.
import csv
with open("Books.csv", "r") as file: # Читаем в список
reader = csv.reader(file)
books = list(reader)
for i, book in enumerate(books): # Выводим с индексами
print(i, book)
del_index = int(input("Индекс строки для удаления: ")) # Просим удалить
del books[del_index] # Удаляем
change_index = int(input("Индекс строки для изменения: ")) # Просим изменить
field = input("Поле для изменения (0:title,1:author,2:year): ")
new_val = input("Новое значение: ")
books[change_index][int(field)] = new_val # Меняем
with open("Books.csv", "w") as file: # Пишем обратно
writer = csv.writer(file)
writer.writerows(books) # Все ряды
Комментарии: list(reader) для списка, del для удаления, присвоение для изменения, writerows для записи.
Задача 117: Математическая Игра с CSV
Создайте простую математическую игру, которая запрашивает у пользователя имя, а затем генерирует два случайных вопроса. Сохраните имя, введенные вопросы, ответы пользователя и итоговый счет в файле .csv. При каждом запуске программа должна добавлять информацию в файл .csv без перезаписи существующих данных.
import csv
import random
name = input("Ваше имя: ") # Просим имя
score = 0
questions = []
answers = []
for _ in range(2): # Два вопроса
a = random.randint(1, 10)
b = random.randint(1, 10)
q = f"{a} + {b} = " # Простой вопрос
questions.append(q)
user_ans = int(input(q))
answers.append(user_ans)
if user_ans == a + b:
score += 1
with open("MathGame.csv", "a") as file: # Добавляем в CSV
writer = csv.writer(file)
writer.writerow([name, questions[0], answers[0], questions[1], answers[1], score])
Комментарии: random для вопросов, список для хранения, writer.writerow для добавления строки.