You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数中如何获取列表索引?代码报错问题求助

问题分析与修复方案

核心错误点

  1. 方法调用语法错误:在result函数中,expense.index[x]使用了方括号,而index是列表的方法,必须用圆括号调用:expense.index(x)。但这种方式存在隐患——如果费用列表中有重复值,index()会返回第一个匹配项的索引,导致对应名字错误。
  2. 遍历逻辑缺陷:直接遍历费用值无法精准对应到名字列表的位置,建议用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:42:15