Untitled
unknown
python
a year ago
11 kB
4
Indexable
# Импортируем библиотеку pandas для работы с данными и модуль sys для выхода из программы import pandas as pd import sys, colorama # Чтение данных из файла excel data = pd.read_excel("universities.xlsx") # читаем данные из файла excel, который содержит информацию об университетах data = data.dropna() # удаляем пропущенные значения, если они есть в таблице data = data.reset_index(drop=True) # сбрасываем индексы, чтобы они шли по порядку от 0 до n-1, где n - количество строк в таблице # Определение функции для рекомендации университетов def recommend_university(): # Запрашиваем параметры у пользователя, которые будут использоваться для фильтрации данных while True: # запускаем бесконечный цикл, который будет повторяться, пока пользователь не введет корректное число university = int(input(colorama.Fore.WHITE + "Государственный или частный (1 - Государственный, 0 - Частный): ")) # спрашиваем, хочет ли пользователь поступить в государственный или частный вуз if university == 1 or university == 0: break else: print(colorama.Fore.RED + 'Введите корректное число!') # выводим сообщение об ошибке и продолжаем цикл after_11 = int(input("После 11 класса? (1 - Да, 0 - Нет): ")) # спрашиваем, закончил ли пользователь 11 класс или нет if after_11 != 1: # если пользователь не закончил 11 класс, то он не может поступить в вуз print(colorama.Fore.RED + "Чтобы поступить в вуз закончите 11 класс!") # выводим сообщение об этом input(colorama.Fore.WHITE + "Нажмите enter чтобы завершить программу") # ждем, пока пользователь нажмет enter sys.exit() # выходим из программы print("Выберите направление:\n1. Аграрный\n2. Медицинский\n3. Гуманитарный\n4. Технический\n5. Военный") # выводим список возможных направлений обучения while True: # запускаем бесконечный цикл, который будет повторяться, пока пользователь не введет корректное число direction_input = int(input(colorama.Fore.WHITE + "Введите номер направления (1, 2, или 3): ")) # спрашиваем, какое направление выбирает пользователь directions_dict = {1: "аграрный", 2: "медицинский", 3: "гуманитарный", 4: "технический", 5: "военный"} # создаем словарь, который сопоставляет номера направлений с их названиями direction = directions_dict.get(direction_input) # получаем название направления по его номеру из словаря if 1 <= direction_input <= 5: break else: print(colorama.Fore.RED + 'Введите корректное число!') # выводим сообщение об ошибке и продолжаем цикл while True: # запускаем бесконечный цикл, который будет повторяться, пока пользователь не введет корректное число city_input = int(input(colorama.Fore.WHITE + "Выберите город обучения (1 - Саратов, 2 - Энгельс): ")) # спрашиваем, в каком городе хочет учиться пользователь cities_dict = {1: "Саратов", 2: "Энгельс"} # создаем словарь, который сопоставляет номера городов с их названиями city = cities_dict.get(city_input) # получаем название города по его номеру из словаря if city == "Саратов" or city == "Энгельс": break else: print(colorama.Fore.RED + 'Введите корректное число!') # выводим сообщение об ошибке и продолжаем цикл while True: # запускаем бесконечный цикл, который будет повторяться, пока пользователь не введет корректное число ege = int(input(colorama.Fore.WHITE + "Введите ваши баллы ЕГЭ (от 0 до 400): ")) # спрашиваем, сколько баллов набрал пользователь за ЕГЭ if ege >= 0 and ege <= 400: break else: print(colorama.Fore.RED + 'Введите корректное число!') # выводим сообщение об ошибке и продолжаем цикл # Вызываем функцию с полученными параметрами result = recommend_university_params(university, after_11, direction, city, ege) # вызываем другую функцию, которая принимает параметры пользователя и возвращает список подходящих университетов # Печатаем результат if not result: # если список пустой, то print("По вашим данным вуз не найден") # выводим сообщение, что вуз не найден else: # иначе for line in result: # для каждой строки в списке print(line) # выводим ее на экран # Определение функции для рекомендации университетов с передачей параметров def recommend_university_params(university, after_11, direction, city, ege): # Фильтруем данные по параметрам выбора пользователя filtered_data = data[(data["university"] == university) & (data["after_11"] == after_11) & (data["direction"] == direction) & (data["city"] == city) & (data["ege"] <= ege)] # создаем новую таблицу, которая содержит только те строки из исходной таблицы, которые соответствуют параметрам пользователя # Если нет подходящих университетов, возвращаем пустой список if filtered_data.empty: # если новая таблица пустая, то return [] # возвращаем пустой список # Сортируем данные по рейтингу в убывающем порядке sorted_data = filtered_data.sort_values(by="rating", ascending=False) # создаем новую таблицу, которая содержит те же строки, что и предыдущая, но отсортированные по столбцу "rating" в убывающем порядке # Извлекаем три лучших варианта top_3 = sorted_data.head(3) # создаем новую таблицу, которая содержит только три первые строки из отсортированной таблицы # Создаем список строк с названием, характеристиками и рейтингом университета result = [] # создаем пустой список for i, (index, row) in enumerate(top_3.iterrows(), start=1): # для каждой пары индекс-строка в таблице с тремя лучшими вариантами, начиная с номера 1 name = row["name"] # получаем название университета из столбца "name" university_type = "Государственный" if row["university"] == 1 else "частный" # получаем тип университета из столбца "university" и присваиваем ему читабельное значение after_11_str = "после 11 класса" if row["after_11"] == 1 else "после 9 класса" # получаем условие поступления из столбца "after_11" и присваиваем ему читабельное значение direction_str = direction # получаем направление обучения из параметра функции city_str = row["city"] # получаем город обучения из столбца "city" ege_str = row["ege"] # получаем требуемые баллы ЕГЭ из столбца "ege" rating_str = row["rating"] # получаем рейтинг университета из столбца "rating" # Формируем строку с названием, характеристиками и рейтингом университета line = f"{i}. {name} - {university_type} вуз {after_11_str} {direction_str} в городе {city_str}, требующий {ege_str} баллов за егэ, рейтинг: {rating_str}" # Добавляем строку в список result.append(line) # Возвращаем список return result # Вызываем функцию для рекомендации университетов recommend_university() input("Нажмите enter чтобы завершить программу") # ждем, пока пользователь нажмет enter
Editor is loading...
Leave a Comment