每當我嘗試運行此代碼時,出現錯誤「字符串索引超出範圍」。
然而,這是它輸出後:錯誤:字符串索引超出範圍
[820.34]
['Joint']
[820.34, 0]
['Joint', 'Joint']
我不爲什麼它給了我一個字符串錯誤,因爲我的函數計算的參數是列表(收入[i]和狀態[1])。對不起,長代碼,但一些幫助將不勝感激!根據要求
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
歡迎來到SO。你必須學習如何調試。在python中,這是通過'print'完成的。儘可能多地打印你需要的變量,以便了解發生了什麼。這是第一步。 – 2014-11-05 07:17:44
你能提供輸入文件數據嗎? – jack 2014-11-05 07:23:01