Python实现:累加满足条件的列表项 统计销售额超5万门店员工总数
符合需求的完整实现代码
你的原有代码存在几个基础逻辑错误,修正后的版本通用适配所有同格式门店记录,新手可以直接对照修改:
def count_employees(records): # 总员工计数器初始值设为整数0,不能用空字符串,否则无法做数值累加 total_emp = 0 for line in records: # 按逗号拆分每行内容为4个字段:[门店ID, 员工数量, 所在郊区, 销售额] # 如果传入的records已经是提前拆分好的嵌套列表,这行可以直接删掉 store_info = line.strip().split(',') # 销售额是字符串格式,转成浮点数才能和50000做数值比较 sales = float(store_info[3]) if sales > 50000: # 员工数量也是字符串,转成整数后累加到总计数器 emp_count = int(store_info[1]) total_emp += emp_count # 最终返回存总人数的计数器,不要返回循环临时变量 return total_emp
关键逻辑说明(新手必看)
- 计数器初始化:所有数值累加的场景,计数器初始值必须是对应数值类型的0,你原来写的空字符串
""是文本类型,执行加法会直接报类型错误。 - 字符串拆分:如果
records是直接用readlines()从txt文件读出来的结果,每个元素是一整行带逗号的文本(比如"Hm001,6,Frankton,42305.67"),必须先用split(',')切割成独立字段,否则直接取[3]拿到的是字符串的第4个字符,根本不是销售额数据。 - 类型转换:从txt读取的所有内容默认都是字符串,必须把员工数转成整数
int、销售额转成浮点数float,才能做大小比较、加法计算,否则字符串和数字直接运算会报错。 - 累加写法:
total_emp += emp_count是简写形式,和total_emp = total_emp + emp_count效果完全一样,都是把当前门店的员工数加到总计数上。 - 返回值注意:循环结束后要返回存总人数的
total_emp变量,你原来写的return count返回的是循环里最后一次遍历的临时行数据,根本不是计算好的总人数。
测试验证
用你提供的示例数据测试,运行结果如下:
test_records = [ "Hm001,6,Frankton,42305.67", "Hm002,10,Glenview,21922.22", "Hm003,7,Silverdale,63277.9", "Hm004,13,Glenview,83290.09", "Hm005,21,Queenwood,81301.82", "Hm006,14,Hillcrest,62333.3", "Hm007,7,Frankton,28998.8", "Hm008,19,Chartwell,51083.5", "Hm009,6,Glenview,62155.72", "Hm0010,8,Enderley,33075.1", "Hm0011,10,Fairfield,61824.7", "Hm0012,15,Rototuna,21804.8", "Hm0013,11,Fairfield,62804.7" ] print(count_employees(test_records)) # 输出:101
这个结果是所有销售额超50000的门店员工数总和,和手动统计结果一致。
内容的提问来源于stack exchange,提问作者dinonuggie
相关产品推荐
相关产品推荐

