В классе провели опрос — кто в какой день недели м...
Créé le : 6 mars 2025
Créé le : 6 mars 2025
В классе провели опрос — кто в какой день недели может пойти в кино.
Есть строка с записанными в ней результатами опроса: дни недели, разделённые пробелом.
Выпиши список дней недели с указанием, сколько человек может идти в кино в этот день.
Ввод Вывод
Вторник Среда Четверг Четверг Суббота Пятница Понедельник Понедельник Четверг Понедельник: 2
Вторник: 1
Среда: 1
Четверг: 3
Пятница: 1
Суббота: 1
Воскресенье: 0
Ниже пример решения на Python, которое считывает строку с результатами опроса (дни недели через пробел), а затем выводит для каждого дня недели, сколько человек выбрали этот день:
pythondays_of_week = [ "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье" ] # Входная строка (пример): input_string = "Вторник Среда Четверг Четверг Суббота Пятница Понедельник Понедельник Четверг" # Разбиваем строку на отдельные слова (дни): input_days = input_string.split() # Создадим словарь для подсчёта counts = {day: 0 for day in days_of_week} # Подсчитываем количество вхождений for d in input_days: if d in counts: counts[d] += 1 # Выводим результат для каждого дня недели по порядку for day in days_of_week: print(f"{day}: {counts[day]}")
Пояснение:
Учительница биологии Тамара Павловна определяет итоговую оценку по максимальной, полученной учеником в течение четверти.
Есть число N — количество учеников, а также в N строках оценки N школьников через пробел.
Выведи четыре строки: количество человек, получивших итоговую оценку 5, 4, 3 и 2 соответственно.
Ввод Вывод
5
2 3 2
3 4 3
3
5
2 5 5 5 5: 2
4: 1
3: 2
2: 0
Ниже приведён пример решения на Python. Программа сначала считывает число — количество учеников. Затем для каждого из учеников считываются его оценки (в одной строке, разделённые пробелами). Итоговая оценка каждого ученика определяется как максимум из всех его оценок. В конце программа выводит количество учеников, чья итоговая оценка равна 5, 4, 3 и 2 соответственно.
python# Читаем количество учеников N = int(input().strip()) # Счётчики итоговых оценок final_counts = {5: 0, 4: 0, 3: 0, 2: 0} for _ in range(N): # Считываем оценки одного ученика grades = list(map(int, input().split())) # Определяем итоговую оценку (максимум среди всех полученных) final_grade = max(grades) # Увеличиваем соответствующий счётчик final_counts[final_grade] += 1 # Выводим результаты по порядку print(f"5: {final_counts[5]}") print(f"4: {final_counts[4]}") print(f"3: {final_counts[3]}") print(f"2: {final_counts[2]}")
Как работает программа:
final_counts
заранее инициализируются счётчики для оценок 5, 4, 3 и 2.grades
).final_counts
для этой оценки на 1.Выбери, как распределены данные в каждом массиве.
Максимальная температура по
:
max_temp = [-1, -9, 2, 10, 21, 23, 31, 32, 23, 13, 5, -3]
Количество свободных мест по
free = [0, 0, 1, 2, 3, 4, 0, 0, 0]
Количество учеников по
:
students = [90, 90, 89, 88, 100, 120, 119, 117, 121, 122, 119]
Количество свободных мест по
:
free = [1, 3, 0, 13, 10, 5, 4, 12, 14, 10, 10, 12, 11]
Количество пройденных шагов по
:
steps = [ 21000, 10320, 320, 10040, 13000, 20300, 19876]
Ниже пример того, как можно «распознать», по какой логике распределены данные в каждом массиве, исходя из их длины и типичных ситуаций:
max_temp = [-1, -9, 2, 10, 21, 23, 31, 32, 23, 13, 5, -3]
free = [0, 0, 1, 2, 3, 4, 0, 0, 0]
students = [90, 90, 89, 88, 100, 120, 119, 117, 121, 122, 119]
free = [1, 3, 0, 13, 10, 5, 4, 12, 14, 10, 10, 12, 11]
steps = [21000, 10320, 320, 10040, 13000, 20300, 19876]
Итоговая «привязка» данных может выглядеть так:
Например, подсчитаем, сколько оценок (2, 3, 4 и 5) было получено учеником. Хранить информацию о количестве соответствующих оценок будем в массиве из 6 элементов. В ходе работы программы меняться будут только последние 4 элемента. В начале массив заполнен нулями.
grades = [0] * 6
А набор оценок 4 5 2 4 5 5 соответствует таким значениям в массиве:
Для каждого набора оценок укажи состояние массива, хранящего количество полученных оценок 2, 3, 4 и 5. Запиши все 6 значений через пробел.
5 4 5 4 3 5 2 4 5
2 2 2 2
4 5 4 5 3
3 4 5
По условию, в массиве grades из 6 элементов первые два элемента остаются нулевыми, а последние четыре отражают, соответственно, количество полученных оценок 2, 3, 4 и 5. То есть итоговая структура:
textgrades[0] = 0 grades[1] = 0 grades[2] = число двоек (2) grades[3] = число троек (3) grades[4] = число четвёрок (4) grades[5] = число пятёрок (5)
Итоговый массив:
[0, 0, 1, 1, 3, 4]
(запишем, как просят, 6 значений через пробел)
0 0 1 1 3 4
Итоговый массив:
[0, 0, 4, 0, 0, 0]
0 0 4 0 0 0
Итоговый массив:
[0, 0, 0, 1, 2, 2]
0 0 0 1 2 2
Итоговый массив:
[0, 0, 0, 1, 1, 1]
0 0 0 1 1 1
Отметь строки этого кода, которые надо изменить так, чтобы программа считала статистику сдачи ЕГЭ, где результат может принимать значение от 0 до 100 баллов.
Ниже приведён упрощённый пример «классической» программы для подсчёта количества полученных учеником оценок 2–5, где используется массив из 6 элементов. Предположим, код выглядит примерно так (строки пронумерованы слева, чтобы было удобнее указывать, что именно нужно менять):
text1: # Создаем массив из 6 элементов 2: grades = [0] * 6 3: 4: N = int(input()) # количество оценок 5: for _ in range(N): 6: mark = int(input()) 7: if mark == 2: 8: grades[2] += 1 9: elif mark == 3: 10: grades[3] += 1 11: elif mark == 4: 12: grades[4] += 1 13: elif mark == 5: 14: grades[5] += 1 15: 16: print(grades)
В этом коде:
grades[2]
отвечает за количество двоек,grades[3]
— за количество троек,grades[4]
— за количество четвёрок,grades[5]
— за количество пятёрок.Чтобы программа считала статистику результатов ЕГЭ, где баллы могут быть от 0 до 100, придётся:
Изменить размер массива (строка 2), чтобы в нём хватало ячеек для каждой возможной оценки (от 0 до 100). А это 101 возможное значение:
pythongrades = [0] * 101
Отказаться от каскада if-elif (строки 7–14), ведь теперь не нужно отдельно обрабатывать 2, 3, 4 и 5. Балл может быть любым от 0 до 100, значит достаточно одной команды:
pythongrades[mark] += 1
Вместо:
pythonif mark == 2: grades[2] += 1 elif mark == 3: grades[3] += 1 ... elif mark == 5: grades[5] += 1
мы можем просто делать:
pythongrades[mark] += 1
Итого, строки, которые нужно изменить:
grades[mark] += 1
.python1: # Создаем массив для подсчета от 0 до 100 баллов 2: grades = [0] * 101 3: N = int(input()) # количество сданных экзаменов (или просто кол-во вводов) 4: for _ in range(N): 5: mark = int(input()) 6: # Просто увеличиваем счетчик для этого балла 7: grades[mark] += 1 8: print(grades)
Теперь в grades[0]
будет храниться, сколько раз встретился результат 0 баллов, в grades[1]
— сколько раз был результат 1 балл, и т.д. вплоть до grades[100]
.
еперь пример посложнее. Придётся вспомнить позапрошлый урок.
Например, есть данные о том, в какой день недели родились твои друзья. Строка с данными выглядит примерно так:
Понедельник Пятница Среда Среда Четверг Среда Воскресенье
Интересно выяснить, какой день оказался самым «популярным»?
Здесь нет чисел, которые можно было бы использовать в качестве индексов массива stat. Вместо них — семь дней недели. А так как в Python индекс массива — это число, придётся хитрить.
Создадим массив с названиями дней недели:
days = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
Какой метод позволит по строке c днём недели узнать индекс соответствующего элемента в таком массиве?
count()
append()
index()
remove()
pop()
Чтобы получить индекс элемента списка по его значению, используют метод index()
. Например:
pythondays = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"] i = days.index("Среда") # вернёт 2
Другие перечисленные методы выполняют иные функции:
count()
– подсчитывает, сколько раз элемент встречается в списке,append()
– добавляет новый элемент в конец списка,remove()
– удаляет первый элемент списка по значению,pop()
– удаляет элемент списка по индексу (по умолчанию последний) и возвращает его.