Привет всем! Сегодня мы, наконец, продолжим и закончим рассмотрение вопроса, который был задан мне в Телеграм: сколько учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику?
Первая часть записи, посвященной данному вопросу доступна по ссылке 🙂 А мы продолжаем:
Сам код целиком выглядит следующим образом:
-
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