@Anastas_os
Пытаюсь программировать)

Как с помощью значения переменной выйти на имя сотрудника в другом файле?

Здравствуйте, хочу вывести имя сотрудника у которого наибольшая зарплата за первое полугодие но пока что могу вывести только его ИНН так как есть два файла:
1)содержит имя, ИНН
2)содержит ИНН, зарплату за первое полугодие, зарплату за второе полугодие

Здесь ''print(num[0])'' у меня выводит его ИНН, подскажите как с помощью этой переменной мне выйти на имя сотрудника в другом файле

def salary():
    fileWorkers = open("C:/Users/OWNER/Desktop/lab/workers.txt","r",encoding="utf-8")
    infile = open("C:/Users/OWNER/Desktop/lab/salary.txt","r",encoding="utf-8")
    arr = []
    arr1 = []
    arrWor=[]
    arrWor_1 = []
    max = 0
    num = 0
    
    arr = infile.readlines()
    for i in arr:
        if i and i != "\n":
         arr1.append(i.split(",")) 

    for summ in arr1:
      if (max<int(summ[1])):
          max = int(summ[1])
          num=summ
    print(num[0])
    
    arrWor = fileWorkers.readlines()
    for i in arrWor:
        if i and i != "\n":
            s = i.split(",")
            b = s[1]         
            if num[0] == b :
                print(s[0]) 


salary()


Первый файл(workers.txt):
Антон М.П.,ІНН:1234567898
Зухра М.Ю.,ІНН:1234567891
Артур О.Ю.,ІНН:1234567897
Павло М.Р.,ІНН:1234567894
Назар А.В.,ІНН:1234567899
Надар С.Ф.,ІНН:1234567892
Марія Л.В.,ІНН:1234567893
Еріка М.П.,ІНН:1234567895
Анеля Р.Ю.,ІНН:1234567810
Артем В.Ю.,ІНН:1234567896

Второй файл(salary.txt):
1234567898,99424,99524
1234567891,91300,95020
1234567897,91870,98200
1234567894,63400,67510
1234567899,80500,76020
1234567892,68070,65500
1234567893,76320,78000
1234567895,97600,96050
1234567810,98060,97200
1234567896,78030,83002
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Коротко можно так:
with open('salary.txt') as file:
	lines = file.read().splitlines()

with open('workers.txt') as file:
	lines2 = file.read().splitlines()

max_salary = max([x.split(',')[1] for x in lines])
inn = [x.split(',')[0] for x in lines if x.split(',')[1] == max_salary][0]
max_salary_user = [x.split(',')[0] for x in lines2 if x.split(',')[1][4:] == inn][0]

print(max_salary_user)

Насколько я понял, вас ставит в ступор конструкции вида:
max_salary = max([x.split(',')[1] for x in lines])
Но в них нет ничего страшного. Данная конструкция является эквивалентом следующей:
my_list = [] # Создаем пустой список

for x in lines: # перебираем каждую строку
	my_list.append(x.split(',')[1]) # Каждую строку делим по запятым, берем второй элемент и добавляем в список.

print(my_list) # В списке будет ['99424', '91300', '91870', '63400', '80500', '68070', '76320', '97600', '98060', '78030']
print(max(my_list)) # С помощью функции max берем сомое большое число из списка.


Попробуйте потренироваться на следующем простом примере: Есть список чисел - от 1 до 15. Нам нужно выбрать числа, которые больше 7 и меньше 13. Можно сделать так:
i = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

for x in i:
	if x > 7 and x < 13:
		print(x)

А можно сделать короче:
i = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

num = [x for x in i if x > 7 and x < 13]
print(num)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы