如何打印此功能的结果

时间:2013-12-07 22:46:23

标签: python-3.x

我是Python和编程的新手,需要一点这个(部分完成)函数的帮助。它调用的文本文件包含一串逗号分隔的数据行(年龄,工资,教育等)。但是,我从一开始就遇到了问题。我不知道如何返回结果。

我的目标是为每个类别以及要排序和统计的每一行创建字典。

e.g。 50人以上的100人,50岁以下的200人等等。

我在正确的球场吗?

file = "adultdata.txt"

def make_data(file):
    try:
       f = open(file, "r")
    except IOError as e:
       print(e)
       return none

large_list = []

avg_age = 0
row_count_under50 = 0
row_count_over50 = 0

#create 2 dictionaries per category

employ_dict_under50 = {}
employ_dict_over50 = {}

for row in f:
    edited_row = row.strip()
    my_list = edited_row.split(",")
    try:
        #Age Category
        my_list[0] = int(my_list[0])

        #Work Category
        if my_list[-1] == " <=50K":
           if my_list[1] in employ_dict_under50:
               employ_dict_under50[my_list[1]] += 1
           else:
              employ_dict_under50[my_list[1]] = 1
              row_count_u50 += 1

        else:
           if my_list[1] in emp_dict_o50:
              employ_dict_over50[my_list[1]] += 1
           else:
              employ_dict_over50[my_list[1]] = 1 
              row_count_o50 += 1

# Other categories here


print(my_list)
#print(large_list)
#return 


# Ignored categories here - e.g. my_list[insert my list numbers here] = None

1 个答案:

答案 0 :(得分:0)

我无权访问您的文件,但我已经纠正了您在代码中遇到的大多数错误。

这些是我在代码中发现的错误列表:

  • 你的函数make_data基本没用,而且超出了范围。你需要完全删除它
  • 使用文件对象f时,需要使用readline从文件中提取数据。
  • 使用文件
  • 等IO资源时,最好使用with语句
  • 你有很多变量,这些变量在内循环中被严格命名并且不存在
  • 您在内部循环中声明了一个没有捕获的尝试。您可以删除该尝试,因为您没有尝试捕获任何错误

你有一些与一般编程有关的非常基本的错误,我可以假设你的新手吗?如果是这样,那么你应该在线学习更多初学者教程,直到你掌握了执行基本任务所需的命令。

尝试将您的代码与此进行比较,看看您是否能理解我想说的内容:

file = "adultdata.txt"

large_list = []

avg_age = 0
row_count_under50 = 0
row_count_over50 = 0

#create 2 dictionaries per category

employ_dict_under50 = {}
employ_dict_over50 = {}

with open(file, "r") as f:
    row = f.readline()

    edited_row = row.strip()
    my_list = edited_row.split(",")
    #Age Category
    my_list[0] = int(my_list[0])

    #Work Category
    if my_list[-1] == " <=50K":
       if my_list[1] in employ_dict_under50:
           employ_dict_under50[my_list[1]] += 1
       else:
          employ_dict_under50[my_list[1]] = 1
          row_count_under50 += 1

    else:
       if my_list[1] in employ_dict_over50:
          employ_dict_over50[my_list[1]] += 1
       else:
          employ_dict_over50[my_list[1]] = 1
          row_count_over50 += 1

# Other categories here
print(my_list)
#print(large_list)
#return

我不能确定这段代码是否可以在没有你的档案的情况下运作,但它应该让你先行一步。