Привет всем! Сегодня мы, наконец, продолжим и закончим рассмотрение вопроса, который был задан мне в Телеграм: сколько учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику?
Первая часть записи, посвященной данному вопросу доступна по ссылке 🙂 А мы продолжаем:
Сам код целиком выглядит следующим образом:
import openpyxl
from openpyxl.utils import get_column_letter
path = 'students.xlsx'
wb = openpyxl.load_workbook(path)
sheets = wb.sheetnames #Получили полный список листов в книге
sheet = wb[sheets[0]] #Сделали активным самый первый лист
row_count = sheet.max_row #Определили количество строк
row_min = 1 #Ввели переменную, отвечающую за минимальное количество строк
informatics = 0 #Ввели переменную, отвечающую за количество школьников, выбравших информатику
column_a = 'A' #Ввели переменную, отвечающую за колонку А
column_c = 'C' #Ввели переменную, отвечающую за колонку В
while row_min <= row_count: #Начинаем цикл, который будет работать пока значение минимального количества строк не станет равным или больше максимальному значению строк
row_min = str(row_min) #Конвертируем это значение в строковый вид
work_cell_a = column_a + row_m #Создаем переменную, которая состоит из колонки А + номер строки
work_cell_c = column_c + row_min #Создаем переменную, которая состоит из колонки С + номер строки
from_a = sheet[work_cell_a].value #Получаем значение ячейки А + номер строки
from_c = sheet[work_cell_c].value #Получаем значение ячейки С + номер строки
stroke = (from_a + ' ' + from_c) #Создаем переменную, которая состоит из значений ячейки А + номер строки + пробел + ячейка С + номер строки
if stroke == 'В информатика': #Проверяем полученное значение - если оно равно заданному...
informatics = informatics + 1 #Увеличиваем значение переменной, отвечающей за количество школьников выбравших тот или иной предмет на единицу
row_min = int(row_min) #Конвертируем переменную, отвечающую за номер строки в int
row_min = row_min + 1 #Увеличиваем значение переменной на единицу
print('Всего из данного региона школьников выбрало информатику:', informatics) #Выводим результат работы программы
Как видите — все просто. Я пошел несколько иным путем (изначально предполагал делать все как-то иначе, но как — не придумал, и в итоге просто получаю значение ячеек, содержащих за название региона + ячейки, содержащей название школьного предмета, а после — сравниваю с заданным значением. Данный путь мне показался полегче 🙂
И в довесок решил чуть модифицировать код, что бы можно было получить общую статистику по предметам — какой предмет сколько школьников выбрали. Код получился вот такой:
import openpyxl
from openpyxl.utils import get_column_letter
path = 'students.xlsx'
wb = openpyxl.load_workbook(path)
sheets = wb.sheetnames #Получили полный список листов в книге
sheet = wb[sheets[0]] #Сделали активным самый первый лист
row_count = sheet.max_row # Определили количество строк
row_min = 1
column_c = 'C'
obchestvoznanie = 0
douche = 0
russkiy = 0
angl = 0
himiya = 0
mathematics = 0
fizika = 0
fizra = 0
literatura = 0
biolog = 0
geograh = 0
france = 0
istoriya = 0
informatics = 0
while row_min <= row_count:
row_min = str(row_min)
work_cell_c = column_c + row_min
from_c = sheet[work_cell_c].value
if from_c == 'обществознание':
obchestvoznanie = obchestvoznanie + 1
elif from_c == 'немецкий язык':
douche = douche + 1
elif from_c == 'русский язык':
russkiy = russkiy + 1
elif from_c == 'английский язык':
angl = angl + 1
elif from_c == 'химия':
himiya = himiya + 1
elif from_c == 'математика':
mathematics = mathematics + 1
elif from_c == 'физика':
fizika = fizika + 1
elif from_c == 'физкультура':
fizra = fizra + 1
elif from_c == 'литература':
literatura = literatura + 1
elif from_c == 'биология':
biolog = biolog + 1
elif from_c == 'география':
geograh = geograh + 1
elif from_c == 'французский язык':
france = france + 1
elif from_c == 'история':
istoriya = istoriya + 1
elif from_c == 'информатика':
informatics = informatics + 1
row_min = int(row_min)
row_min = row_min + 1
print('Всего школьников выбрало предметы: \n'
'- обществознание:', obchestvoznanie,'\n'
'- немецкий:', douche,'\n'
'- русский:', russkiy,'\n'
'- английский:', angl,'\n'
'- химия:', himiya, '\n'
'- математика:', mathematics, '\n'
'- физика:', fizika, '\n'
'- физкультура:', fizra, '\n'
'- литература:', literatura, '\n'
'- биология:', biolog, '\n'
'- географию:', geograh, '\n'
'- французский язык:', france, '\n'
'- историю:', istoriya, '\n'
'- информатику:', informatics)
Как всегда — в случае возникновения вопросов пишите на почту, или в Telegram