2017-09-24 68 views
-3

我的任务是:为什么我在这里得到一个str和int的typeorder?

编写一个程序来获取雇员姓名和薪水。计算基于以下标准 联邦税,州税:如果 工资超过100000大于20%计算的联邦税收 否则计算在15%的联邦税按5%计算国税 计算净雇员的工资。计算工资净额 ,从总工资中减去联邦和州的税。

我的代码:

employeename = input("Enter the employee's name:") 
grosssalary = input("Enter the employee's gross salary: $") 
if grosssalary > 100000: 
    federaltax = 0.20 
else: 
    federaltax = 0.15 
statetax = 0.05 
netsalary = float(grosssalary) - float(grosssalary * federaltax) - float(grosssalary * statetax) 
print (employeename,"'s net salary is $",netsalary) 

输出:

Enter the employee's name:Ali 
Enter the employee's gross salary: $1000 
Traceback (most recent call last): 
    File "/home/ubuntu/workspace/Untitled4", line 3, in <module> 
    if grosssalary > 100000: 
TypeError: unorderable types: str() > int() 
Process exited with code: 1 
+0

您应该首先将您的字符串转换为int。 –

+0

这是一个重复的肯定... –

回答

1

input()返回在Python 3.x的键入str

所以你在做grosssalary > 100000这是str > int

为了解决,使用:

gross_salary = int(input("Enter the employee's gross salary: $")) 
1

在Python 3.x中,的input()返回值总是str类型的,所以要在str对象进行比较的对象int,这产生一个TypeError。你不能那样做,你必须在比较之前将它转换成intfloat

试试这个:

grosssalary = float(input("Enter the employee's gross salary: $")) 
0

错误是明确的,那你尝试检查一个字符串是否是比int更大,这是不能接受的。

你应该先转换您的字符串转换成int,然后让你检查,你的代码应该是这样的:

employeename = input("Enter the employee's name:") 
grosssalary = input("Enter the employee's gross salary: $") 
if int(grosssalary) > 100000: 
    federaltax = 0.20 
else: 
    federaltax = 0.15 
statetax = 0.05 
netsalary = float(grosssalary) - float(grosssalary * federaltax) - float(grosssalary * statetax) 
print (employeename,"'s net salary is $",netsalary) 

而且你还要先检查一下,如果字符串是int,要做到这一点你的检查应看起来像:

if grosssalary.isdigit() 

    if int(grosssalary) > 100000: 

     federaltax = 0.20 
    else: 
     federaltax = 0.15 
else: 
    print("bad entry") 
相关问题