如何在区分变量的同时读取文件?

2024-09-22 10:19:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习Python,我的家庭作业不知道怎么开始

我必须从一个(txt)文件中阅读关于公司雇员的信息:name, age, occupation, salary, years_in_the company。它们位于单独的行中,并由选项卡拆分,例如:

Helen   20  Network Designer    5449    9
Jasmine 40  Software Architect  2536    1
Phoebe  28  Software Engineer   2627    7
Aysha   34  Software Developer  6441    3

现在,有了这些信息,我必须创建一些函数,比如员工的平均年龄、最佳薪酬工作、最佳薪酬员工等等。我不知道如何正确读取文件中的数据以及如何实现这些功能。我想先定义函数,然后读取文件中的所有数据,但我的一个朋友告诉我,我可以定义每个函数,在其中我可以读取必要的数据

例如,如果我要计算员工的平均年龄,我想这样做:

 def avg(*args):
        count = len(args)
        if args > 0:
            age_sum = 0
            for i in args:
                age_sum += i
            return age_sum / count
        else:
            return 0

问题是,我不知道如何将正确的数据提取到函数中。有谁能帮我理解如何正确地做这件事吗


Tags: 文件数据函数in信息agereturn定义
1条回答
网友
1楼 · 发布于 2024-09-22 10:19:51

这是唯一的方法,但可能有比这更好的方法,但至少这会帮助你处理你的问题。您可以优化代码,还可以将变量从int改为float,以更好地覆盖avg等,并且文件中的行之间不应该有空行

#print all detail
def print_all():
  file = open("data.txt","r")
  for line in file:  
    fields = line.split(" ")
    print  ("name "+ fields[0])
    print  ("age "+ fields[1])
    print  ("occupation "+ fields[2])
    print  ("type occupation "+ fields[3])
    print  ("salary "+ fields[4])
    print  ("years_in_the_company "+ fields[5])
  file.close()
# avg salary
def avg__salary(employ = "salary" ):
  file = open("data.txt","r")
  avg=0
  for salary in file:
      salary_field = salary.split(" ")
      avg=avg+int(salary_field[4])
  file.close()
  return avg
# avg age
def avg__age(employ = "age" ):
  file = open("data.txt","r")
  avg_age=0
  for age in file:
      age_field = age.split(" ")
      avg_age=avg_age+int(age_field[1])
  file.close()
  return avg_age

# best paid job
def best_paid(employ = "paid" ):
  file = open("data.txt","r")
  bestpaid=0
  for age in file:
      age_field = age.split(" ")
      if bestpaid < age_field[4]:
         bestpaid=age_field[4]
  file.close()
  return bestpaid

number_of_lines=open('data.txt', 'r').read().count("\n") 
print("All employ detail")
print_all()
print("Avg salary is",avg__salary()/number_of_lines)
print("Avg age is",avg__age()/number_of_lines)
print("Best paid is",best_paid())

相关问题 更多 >