Python университетское задание - PullRequest
0 голосов
/ 16 апреля 2020

Условия задания:

Расчет заработной платы представлен в виде двух таблиц. Первый содержит имена сотрудников магазина, а второй - их зарплату за текущий месяц. Найдите фамилию сотрудника, чья зарплата меньше всего отклоняется от средней зарплаты всех сотрудников за текущий месяц. Найдите имена двух рабочих с самой большой зарплатой. Удалить информацию о сотрудниках из заработной платы, чья зарплата минимальна.

Я написал такой код, чтобы найти фамилию сотрудника, чья зарплата меньше всего отклоняется от средней зарплаты:

N = int(input('Enter number of workers: '))
salaries_arr = []
surnames_arr = []
for i in range(N):
    print('Worker', i + 1)
    surnames = input(f'Enter surname of worker {i + 1}: ', )
    salary = int(input(f'Salary of worker {i + 1}: '))
    salaries_arr.append(salary)
    surnames_arr.append(surnames)
info_arr = list(zip(surnames_arr, salaries_arr))
average_salary = sum(salaries_arr) / N
print(info_arr)
print(average_salary)
difference_salary = []
for i in range(N):
    difference_salary.append(abs(salaries_arr[i] - average_salary))
print(difference_salary)
minima = max(difference_salary)
pos = 0
for j in range(N):
    if difference_salary[j] < minima:
        minima = difference_salary[j]
        pos = j
print("Minimal salary deviation has worker: ", surnames_arr[pos])

Но я не могу понять, как я могу найти другие два условия. Буду благодарен за ваши идеи или решения.

1 Ответ

1 голос
/ 16 апреля 2020
  • Чтобы узнать имена двух работников с самой большой зарплатой, вы можете выполнить следующие шаги -
    1. Сортировать массив info_arr в порядке убывания на основе зарплаты.
    2. Первые два элемента отсортированного массива будут иметь имя двух рабочих с самой большой зарплатой. В коде это будет выглядеть так:
sorted_salary = sorted(info_arr, key=lambda x: x[1], reverse=True)
largest_salary_person1 = sorted_salary[0]
largest_salary_person2 = sorted_salary[1]
  • Чтобы удалить информацию о сотрудниках из зарплаты, чья зарплата минимальна, выполните следующие шаги -
    1. L oop через зарплату всех сотрудников и индекс магазина сотрудника, имеющего наименьшую зарплату.
    2. Элемент Pop с указанным выше индексом из salaries_arr и surname_arr.
    # Find worker having least salary
    least_salary_worker_index = 0
    least_salary = salary_arr[0]
    for i in range(1, len(salary_arr)):
        current_worker_salary = salary_arr[i]
        if current_worker_salary < least_salary:
            least_salary = current_worker_salary
            least_salary_worker_index = i

    # Remove information of employee with least salary
    salary_arr.pop(least_salary_worker_index)
    surname_arr.pop(least_salary_worker_index)
...