繁体   English   中英

错误:字符串索引超出范围

[英]Error:string index out of range

每当我尝试运行此代码时,都会出现错误“字符串索引超出范围”。
但是,这是在它输出之后:

[820.34]
['Joint']
[820.34, 0]
['Joint', 'Joint']

我不是为什么它给我一个字符串错误,因为函数计算的参数是列表(income [i]和status [i])。 很抱歉,冗长的代码,但是对您的帮助将不胜感激!

infile=open("data.txt",'r')
a=infile.readline()
Name=[]
status=[]
income=[]
while(len(a)>0):
    Fname,Lname,statuses,incomes=a.split()
    Name.append(Fname+ ' '+ Lname)
    status.append(statuses)
    income.append(incomes)
    a=infile.readline()
a=range(len(income))



taxes=0
taxes_s=0
taxes_j=0
tax=[]
Status=[]

def calculations(income,status,Status,tax,taxes):
    if status=="S" or status=="s":
        if float(income)<0:
            pass
        elif float(income)<1710:
            taxes_s=0
        elif float(income)<20930:
            taxes_s=87 + .03*(float(income)-1710)
        elif float(income)<28790:
            taxes_s=742.40 + .08*(float(income)-20930)
        elif float(income)>=28790:
            taxes_s=1449.60 + .11*(float(income)-28790)
        taxes_j=0
        status="Single"


    elif status=="J" or status=="j":
        if float(income)<0:
            pass
        elif float(income)<3420:
            taxes_j=0
        elif float(income)<47120:
            taxes_j=330 + .04*(float(income)-3420)
        elif float(income)<57580:
            taxes_j=1905.40 + .09*(float(income)-47120)
        elif float(income)>=57580:
            taxes_j=2899.20 + .11*(float(income)-57580)
        taxes_s=0
        status="Joint"

    else:
        pass
    global taxes_j
    global taxes_s
    if taxes_j==0:
        net=float(income)-taxes_s
        taxes=taxes_s
    elif taxes_s==0:
        net=float(income)-taxes_j
        taxes=taxes_j
    Status.append(status)
    tax.append(taxes)
    return Status,income,net,tax

for i in a:
    Status,income,net,tax=calculations(income[i],status[i],Status,tax,taxes)
    print(tax)
    print(Status)

根据要求输入数据:

Joe Smith  J  15678.50
Joseph Kardian  j  539590.00
Bill Jones  X  8976.0
Nancy Brown  j  -9087.0
Marty Klauss  S  3390.58
Ali Hakimi  s  675890.0
George Karlton  J  67534.50

问题在这里

 for i in a:
    Status,income,net,tax=calculations(income[i],status[i],Status,tax,taxes)
    print(tax)
    print(Status)

Realpce具有:

for i in a:
   Status,income1,net,tax=calculations(income[i],status[i],Status,tax,taxes)
   print(tax)
   print(Status)

您正在使用收入分配数据,这将替换收入列表 ,由于索引超出范围而导致错误,请提供唯一的名称以避免此类错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM