def count_tax(salary):
if salary<=5000:
tax=0
elif salary<=8000:
tax=(salary-5000)*0.03
elif salary<=12000:
tax=(salary-8000)*0.05+90
elif salary<=18000:
tax=(salary-12000)*0.1+200+90
return tax
def count_qita(listA):
for i in range(1,len(listA)):
listA[i][6]=eval(listA[i][3]+listA[i][4]+listA[i][5])
listA[i][6]=str(listA[i][6])
def count_gongzi(listA):
for i in range(1,len(listA)):
listA[i][7]=count_tax(eval(listA[i][6]))
listA[i][8]=eval(listA[i][6])-read_list_data[i][7]+eval(read_list_data[i][6])
listA[i][7]=str(listA[i][7])
listA[i][8]=str(listA[i][8])
return tax
def read_file(filename):
read_file=open(filename,'r',encoding='utf-8')
stringA=read_file.read()
return stringA
def pre_data(stringA):
listA=stringA.split('\n')
for i in range(len(listA)):
listA[i]=listA[i].split()
return listA
read_str=read_file('ygxx.txt')
read_list_data=pre_data(read_str)
count_qita(read_list_data)
count_gongzi(read_list_data)
工号 姓名 应发工资 岗位津贴 交通补贴 奖金 其他 所得税 实发工资
01 李明 7000 300 200 400 0 0
02 王阳 6000 280 210 300 0 0
03 张海 8000 290 430 200 0 0
04 刘鑫 5500 300 230 530 0 0
05 张三 6500 200 340 280 0 0
06 李四 5400 390 300 290 0 0
07 王五 7600 300 450 590 0 0
08 赵六 5800 490 340 470 0 0
09 王海 6800 300 340 340 0 0
10 刘洪 7800 340 530 200 0 0
你现在报错是因为有个tax没定义导致的
代码发一下,图片这种没办法本地测试给你帮助的
你的count_tax()函数里少了一个else,就是如果工资大于18000的话,tax应该是多少。
而且根据你引用的列表,比如ListA[i][6]第一个数据300200400,确定这是工资吗?还是应该引用ListA[i][2]?
txt内容最好也发一下
给你改了一下,排除了刚才的错误
def count_tax(salary):
print(salary)
if salary<=5000:
tax=0
elif salary<=8000:
tax=(salary-5000)*0.03
elif salary<=12000:
tax=(salary-8000)*0.05+90
elif salary<=18000:
tax=(salary-12000)*0.1+200+90
return tax
def count_qita(listA):
for i in range(1,len(listA)):
listA[i][6]=int(listA[i][3])+int(listA[i][4])+int(listA[i][5])
listA[i][6]=str(listA[i][6])
def count_gongzi(listA):
for i in range(1,len(listA)):
listA[i][7]=count_tax(eval(listA[i][6]))
eval(listA[i][6])
read_list_data[i][7]
eval(read_list_data[i][6])
listA[i].append(eval(listA[i][6])-read_list_data[i][7]+eval(read_list_data[i][6]))
listA[i][7]=str(listA[i][7])
listA[i][8]=str(listA[i][8])
return tax ##?
def read_file(filename):
read_file=open(filename,'r',encoding='utf-8')
stringA=read_file.read()
return stringA
def pre_data(stringA):
listA=stringA.split('\n')
for i in range(len(listA)):
print(listA[i].split())
listA[i]=listA[i].split()
return listA
read_str=read_file(r'D:\PythonProgram\LeetCode\data1\ygxx.txt')
read_list_data=pre_data(read_str)
count_qita(read_list_data)
count_gongzi(read_list_data)