Python函数中如何获取列表索引?代码报错问题求助
问题分析与修复方案
核心错误点
- 方法调用语法错误:在
result函数中,expense.index[x]使用了方括号,而index是列表的方法,必须用圆括号调用:expense.index(x)。但这种方式存在隐患——如果费用列表中有重复值,index()会返回第一个匹配项的索引,导致对应名字错误。 - 遍历逻辑缺陷:直接遍历费用值无法精准对应到名字列表的位置,建议用
enumerate同时获取索引和值,确保一一对应。
修正后的代码
def get_names(): names = [] while True: names.append(input('<Department Electricity,District 1,Tehran>\n Hello dear customer\n enter your name: ')) if input('press s to stop: ') == 's': break return names def get_expenses(names): expenses = [] for name in names: expenses.append(int(input(f' dear {name} insert your monthly electricity expense: '))) return expenses def calculate_average(expenses): return sum(expenses) / len(expenses) def show_result(names, expenses, average): for idx, expense in enumerate(expenses): if expense > average: print(names[idx], 'has high expense') names_list = get_names() expenses_list = get_expenses(names_list) show_result(names_list, expenses_list, calculate_average(expenses_list))
额外优化说明
- 调整了函数名和变量名,符合Python的PEP8命名规范(小写字母+下划线),提升代码可读性。
- 用
enumerate遍历费用列表,同时拿到索引idx和费用值expense,确保每个费用都能精准对应到正确的名字,解决了重复值导致的索引错误问题。 - 简化了
average函数的写法,直接返回计算结果,更简洁。
内容的提问来源于stack exchange,提问作者hosein moradi.k
相关产品推荐
相关产品推荐

