Сколько уче­ни­ков в Во­сточ­ном окру­ге (В) вы­бра­ли в ка­че­стве лю­би­мо­го пред­ме­та информатику Часть 2

Сколько уче­ни­ков в Во­сточ­ном окру­ге (В) вы­бра­ли в ка­че­стве лю­би­мо­го пред­ме­та информатику? Часть 2

Привет всем! Сегодня мы, наконец, продолжим и закончим рассмотрение вопроса, который был задан мне в Телеграм: сколько уче­ни­ков в Во­сточ­ном окру­ге (В) вы­бра­ли в ка­че­стве лю­би­мо­го пред­ме­та информатику?

Первая часть записи, посвященной данному вопросу доступна по ссылке 🙂 А мы продолжаем:

Сам код целиком выглядит следующим образом:

  1. import openpyxl
  2. from openpyxl.utils import get_column_letter
  3.  
  4. path = 'students.xlsx'
  5. wb = openpyxl.load_workbook(path)
  6. sheets = wb.sheetnames #Получили полный список листов в книге
  7. sheet = wb[sheets[0]] #Сделали активным самый первый лист
  8. row_count = sheet.max_row  #Определили количество строк
  9.  
  10. row_min = 1 #Ввели переменную, отвечающую за минимальное количество строк
  11. informatics = 0 #Ввели переменную, отвечающую за количество школьников, выбравших информатику
  12. column_a = 'A' #Ввели переменную, отвечающую за колонку А
  13. column_c = 'C' #Ввели переменную, отвечающую за колонку В
  14.  
  15. while row_min <= row_count: #Начинаем цикл, который будет работать пока значение минимального количества строк не станет равным или больше максимальному значению строк
  16.     row_min = str(row_min) #Конвертируем это значение в строковый вид
  17.     work_cell_a = column_a + row_m #Создаем переменную, которая состоит из колонки А + номер строки
  18.     work_cell_c = column_c + row_min #Создаем переменную, которая состоит из колонки С + номер строки
  19.     from_a = sheet[work_cell_a].value #Получаем значение ячейки А + номер строки
  20.     from_c = sheet[work_cell_c].value #Получаем значение ячейки С + номер строки
  21.     stroke = (from_a + ' ' + from_c) #Создаем переменную, которая состоит из значений ячейки А + номер строки + пробел + ячейка С + номер строки
  22.     if stroke == 'В информатика': #Проверяем полученное значение - если оно равно заданному... 
  23.         informatics = informatics + 1 #Увеличиваем значение переменной, отвечающей за количество школьников выбравших тот или иной предмет на единицу
  24.     row_min = int(row_min) #Конвертируем переменную, отвечающую за номер строки в int
  25.     row_min = row_min + 1 #Увеличиваем значение переменной на единицу
  26. print('Всего из данного региона школьников выбрало информатику:', informatics) #Выводим результат работы программы

Как видите — все просто. Я пошел несколько иным путем (изначально предполагал делать все как-то иначе, но как — не придумал, и в итоге просто получаю значение ячеек, содержащих за название региона + ячейки, содержащей название школьного предмета, а после — сравниваю с заданным значением. Данный путь мне показался полегче 🙂

И в довесок решил чуть модифицировать код, что бы можно было получить общую статистику по предметам — какой предмет сколько школьников выбрали. Код получился вот такой:

  1. import openpyxl
  2. from openpyxl.utils import get_column_letter
  3.  
  4. path = 'students.xlsx'
  5. wb = openpyxl.load_workbook(path)
  6. sheets = wb.sheetnames #Получили полный список листов в книге
  7. sheet = wb[sheets[0]] #Сделали активным самый первый лист
  8. row_count = sheet.max_row  # Определили количество строк
  9.  
  10. row_min = 1
  11. column_c = 'C'
  12.  
  13. obchestvoznanie = 0
  14. douche = 0
  15. russkiy = 0
  16. angl = 0
  17. himiya = 0
  18. mathematics = 0
  19. fizika = 0
  20. fizra = 0
  21. literatura = 0
  22. biolog = 0
  23. geograh = 0
  24. france = 0
  25. istoriya = 0
  26. informatics = 0
  27.  
  28. while row_min <= row_count:
  29.     row_min = str(row_min)
  30.     work_cell_c = column_c + row_min
  31.     from_c = sheet[work_cell_c].value
  32.     if from_c == 'обществознание':
  33.         obchestvoznanie = obchestvoznanie + 1
  34.     elif from_c == 'немецкий язык':
  35.         douche = douche + 1
  36.     elif from_c == 'русский язык':
  37.         russkiy = russkiy + 1
  38.     elif from_c == 'английский язык':
  39.         angl = angl + 1
  40.     elif from_c == 'химия':
  41.         himiya = himiya + 1
  42.     elif from_c == 'математика':
  43.         mathematics = mathematics + 1
  44.     elif from_c == 'физика':
  45.         fizika = fizika + 1
  46.     elif from_c == 'физкультура':
  47.         fizra = fizra + 1
  48.     elif from_c == 'литература':
  49.         literatura = literatura + 1
  50.     elif from_c == 'биология':
  51.         biolog = biolog + 1
  52.     elif from_c == 'география':
  53.         geograh = geograh + 1
  54.     elif from_c == 'французский язык':
  55.         france = france + 1
  56.     elif from_c == 'история':
  57.         istoriya = istoriya + 1
  58.     elif from_c == 'информатика':
  59.         informatics = informatics + 1
  60.  
  61.     row_min = int(row_min)
  62.     row_min = row_min + 1
  63. print('Всего школьников выбрало предметы: \n'
  64.       '- обществознание:', obchestvoznanie,'\n'
  65.       '- немецкий:', douche,'\n'
  66.       '- русский:', russkiy,'\n'
  67.       '- английский:', angl,'\n'
  68.       '- химия:', himiya, '\n'
  69.       '- математика:', mathematics, '\n'
  70.       '- физика:', fizika, '\n'
  71.       '- физкультура:', fizra, '\n'
  72.       '- литература:', literatura, '\n'
  73.       '- биология:', biolog, '\n'
  74.       '- географию:', geograh, '\n'
  75.       '- французский язык:', france, '\n'
  76.       '- историю:', istoriya, '\n'
  77.       '- информатику:', informatics)

Как всегда — в случае возникновения вопросов пишите на почту, или в Telegram