我一直在获取索引错误。我不知道该在哪里更改代码。这是我的密码

时间:2019-02-21 15:21:00

标签: python

def disp_sss():
    print ("\n\nList of SSS loans\n")
    print ("EmployeeNo        SSS        Deduction")
    for idx in range(len(EmpNo)):
        print (" {0:15} {1:10s} {2:10.2f}".format(EmpNo[idx], SSSLoan[idx], float(MonthlyDeduction[idx])))

im试图显示文本文件中的数据。这是错误信息。 第87行,在disp_sss中     打印(“ {0:15} {1:10s} {2:10.2f}”。format(EmpNo [idx],SSSLoan [idx],float(MonthlyDeduction [idx]))) IndexError:列表索引超出范围

问题是,当我运行该程序时,它将显示所有数据,但是在显示数据后,错误开始出现。这是分别显示即时通讯。 员工没有SSS扣除  123 500 200.00  a1001 300 20.00

2 个答案:

答案 0 :(得分:0)

我的最佳猜测是您的SSLoan / MonthlyDeduction与EmpNo的长度不同。

要进行调试,请先尝试一次将其删除,然后逐个添加,以查看真正的问题所在。

或者,您可以考虑将它们存储到数据框中并显示该数据框,这样看起来可能会更好。

答案 1 :(得分:0)

您要遍历列表EmpNo上的索引,但是您试图在其他两个列表SSSLoanMonthlyDeduction上使用相同的索引,因此如果有两个列表的项目较少,则当迭代到达IndexError的索引存在的位置,而EmpNoSSSLoan的索引不存在时,将导致MonthlyDeduction

您应确保3个列表的长度相等。另外,您可以使用zip这3个列表,以便在最短列表用完时迭代将结束:

def disp_sss():
    print("\n\nList of SSS loans\n")
    print("EmployeeNo        SSS        Deduction")
    for row in zip(EmpNo, SSSLoan, MonthlyDeduction):
        print(" {0:15} {1:10s} {2:10.2f}".format(row))