Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кортежи и словари

.docx
Скачиваний:
0
Добавлен:
16.06.2026
Размер:
60.66 Кб
Скачать

1.Даны ящики, которые вмещают 5 кг, 10 кг и 15 кг яблок. Необходимо выяснить, сколько ящиков разного размера понадобится для того, чтобы распределить X кг яблок. X – вводится во время работы программы. (Чем меньше ящиков, тем лучше.)

 Мы создадим кортеж с размерами ящиков, например (15, 10, 5). Таким образом, у нас есть 3 разных типа ящиков, которые могут вместить 15 кг, 10 кг и 5 кг яблок соответственно.

 Для хранения количества ящиков каждого размера мы будем использовать словарь, где ключами будут размеры ящиков, а значениями — количество таких ящиков.

 Будем начинать с самого большого ящика (15 кг), пока не распределим все яблоки.

 После этого переходим к меньшему размеру ящика (10 кг), и затем к 5 кг.

 Для каждого типа ящика будем вычислять, сколько его нужно для оставшихся яблок и обновлять остаток.

def distribute_apples(X):

# Размеры ящиков

box_sizes = (15, 10, 5)

# Словарь для хранения количества ящиков

box_count = {size: 0 for size in box_sizes}

# Процесс распределения яблок по ящикам

for size in box_sizes:

box_count[size] = X // size # Считаем, сколько ящиков данного размера поместится

X %= size # Оставшиеся яблоки после использования ящиков этого размера

# Если остались яблоки, которые не могут поместиться в ящики

if X > 0:

print("Оставшиеся яблоки не помещаются в доступные ящики.")

return

# Выводим результат

print(f"Для {X} кг яблок потребуется:")

for size in box_sizes:

if box_count[size] > 0:

print(f"{box_count[size]} ящиков по {size} кг")

# Вводим количество яблок

X = int(input("Введите количество яблок в кг: "))

distribute_apples(X)

Результат:

Для 35 кг яблок потребуется:

2 ящика по 15 кг

1 ящик по 5 кг

2.В кортеже хранятся: имя и оценки студентов вашей группы. Напишите программу, которая выводит имена студентов, у которых оценка равна введенной с клавиатуры оценке.

def find_students_with_grade(students, grade):

# Пробегаем по каждому студенту и его оценкам

for name, grades in students:

if grade in grades:

print(name)

# Пример данных: кортежи, где первый элемент - имя, второй - список оценок

students = [

("Alice", [5, 4, 3, 5]),

("Bob", [2, 3, 5, 5]),

("Charlie", [3, 4, 3, 4]),

("David", [4, 4, 5, 5])

]

# Вводим нужную оценку

grade = int(input("Введите оценку: "))

# Выводим имена студентов с этой оценкой

find_students_with_grade(students, grade)

Результат:

Alice

Bob

David

3. Создайте словарь «Рыбы», а его элементы разделите на 3 вида: «речные», «озерные» и «морские рыбы». Выведите на экран сначала только ключи, а потом элементы словаря.

Для создания словаря с разделением рыбы на три вида (речные, озерные и морские), мы можем использовать структуру, где ключами будут являться категории (например, "речные", "озерные", "морские"), а значениями — списки рыбы, относящейся к каждой категории.

Затем, программа выведет сначала ключи словаря, а затем элементы (рыбы), соответствующие этим ключам.

# Создаем словарь

fishes = {

"речные": ["щука", "окунь", "карп"],

"озерные": ["форель", "плотва", "сазан"],

"морские": ["тунец", "лосось", "сельдь"]

}

# Выводим только ключи словаря

print("Ключи словаря (категории рыб):")

for key in fishes.keys():

print(key)

# Выводим элементы словаря (рыбы)

print("\nЭлементы словаря (рыбы):")

for key, values in fishes.items():

print(f"{key}: {', '.join(values)}")

Результат:

Ключи словаря (категории рыб):

речные

озерные

морские

Элементы словаря (рыбы):

речные: щука, окунь, карп

озерные: форель, плотва, сазан

морские: тунец, лосось, сельдь

4. Дан кортеж (3, 's', 1, 5, 's'). Выведите на экран: количество всех элементов кортежа, количество строк 's', индекс первого вхождения 's' в кортеж

# Данный кортеж

t = (3, 's', 1, 5, 's')

# 1. Количество всех элементов в кортеже

total_elements = len(t)

# 2. Количество строк 's' в кортеже

count_s = t.count('s')

# 3. Индекс первого вхождения строки 's'

first_index_s = t.index('s')

# Выводим результаты

print(f"Количество всех элементов кортежа: {total_elements}")

print(f"Количество строк 's' в кортеже: {count_s}")

print(f"Индекс первого вхождения 's': {first_index_s}")

Результат:

Количество всех элементов кортежа: 5

Количество строк 's' в кортеже: 2

Индекс первого вхождения 's': 1

len(t) — возвращает количество элементов в кортеже.

t.count('s') — подсчитывает, сколько раз встречается элемент 's' в кортеже.

t.index('s') — находит индекс первого вхождения строки 's' в кортеже.

5. Дан словарь d = {'1': 1.29, '2': 0.43}. Используя доступ к элементам словаря по ключу, найдите произведение 1.29*0.43, после чего добавьте результат в словарь, а затем выведите значение нового элемента на экран.

# Исходный словарь

d = {'1': 1.29, '2': 0.43}

# 1. Получаем значения по ключам

value1 = d['1']

value2 = d['2']

# 2. Находим произведение

result = value1 * value2

# 3. Добавляем результат в словарь

d['result'] = result

# 4. Выводим значение нового элемента

print(f"Значение нового элемента 'result': {d['result']}")

6. Создайте словарь, связав его с переменной school, и наполните данными, которые бы отражали количество учащихся в разных классах (1а, 1б, 2б, 6а, 7в и т. п.). Внесите изменения в словарь согласно следующему: а) в одном из классов изменилось количество учащихся, б) в школе появился новый класс, с) в школе был расформирован (удален) другой класс. Вычислите общее количество учащихся в школе.

Функции для внесения изменений:

  • change_students(class_name, new_count) — изменяет количество учащихся в указанном классе.

  • add_class(class_name, students) — добавляет новый класс.

  • remove_class(class_name) — удаляет класс.

Дополнительная информация:

  • print_max_min_class() — выводит класс с наибольшим и наименьшим количеством учащихся.

  • calculate_total_students() — выводит общее количество учащихся в школе.

  • sort_classes_by_students() — сортирует классы по количеству учащихся (по убыванию) и выводит информацию.

Внесение изменений и вывод:

  • В программе есть функции, которые изменяют количество учащихся в классе, добавляют новый класс и удаляют класс. После каждого изменения выводится результат.

  • Программа сортирует классы и выводит информацию о классе с наибольшим и наименьшим количеством учащихся.

# Исходный словарь с количеством учащихся в разных классах

school = {

'1а': 25,

'1б': 28,

'2б': 30,

'6а': 22,

'7в': 26,

'5а': 24,

'3б': 29

}

# Функция для отображения информации о классе

def print_class_info():

print("Информация о классах:")

for class_name, students in school.items():

print(f"{class_name}: {students} учащихся")

# а) Изменим количество учащихся в нескольких классах

def change_students(class_name, new_count):

if class_name in school:

old_count = school[class_name]

school[class_name] = new_count

print(f"Количество учащихся в классе {class_name} изменилось с {old_count} на {new_count}.")

else:

print(f"Класс {class_name} не найден.")

# б) Добавим новый класс

def add_class(class_name, students):

if class_name not in school:

school[class_name] = students

print(f"Класс {class_name} добавлен с {students} учащимися.")

else:

print(f"Класс {class_name} уже существует.")

# в) Удалим класс

def remove_class(class_name):

if class_name in school:

del school[class_name]

print(f"Класс {class_name} был удален.")

else:

print(f"Класс {class_name} не найден.")

# г) Выводим класс с наибольшим и наименьшим количеством учащихся

def print_max_min_class():

max_class = max(school, key=school.get)

min_class = min(school, key=school.get)

print(f"Класс с наибольшим количеством учащихся: {max_class} ({school[max_class]} учащихся)")

print(f"Класс с наименьшим количеством учащихся: {min_class} ({school[min_class]} учащихся)")

# д) Выводим количество учащихся в школе

def calculate_total_students():

total_students = sum(school.values())

print(f"Общее количество учащихся в школе: {total_students}")

# е) Сортировка классов по количеству учащихся

def sort_classes_by_students():

sorted_classes = sorted(school.items(), key=lambda x: x[1], reverse=True)

print("Сортировка классов по количеству учащихся:")

for class_name, students in sorted_classes:

print(f"{class_name}: {students} учащихся")

# Основной цикл программы

def main():

# Отображаем начальное состояние

print_class_info()

# Вносим изменения в классы

change_students('1б', 27) # Изменим количество учащихся в классе 1б

add_class('8а', 24) # Добавим новый класс 8а

remove_class('7в') # Удалим класс 7в

# Выводим класс с наибольшим и наименьшим количеством учащихся

print_max_min_class()

# Выводим общее количество учащихся

calculate_total_students()

# Сортируем классы по количеству учащихся

sort_classes_by_students()

# Запуск программы

if __name__ == "__main__":

main()

Результат :

Соседние файлы в предмете Программирование на Python