无法让 python 跟随第一个 if-elif-else 语句

Cant get python to follow the first if-elif-else statement

当我输入 0 时,此代码遵循联名账户备案而不是单身账户,我无法理解。是编码错了吗?我错过了什么吗?我无法弄清楚如何解决它。谢谢!

问题描述: 美国联邦个人所得税是根据 申报状态和应纳税所得额。申请状态有四种:单身 申报人和已婚人士共同申报。税率每年都不同。 Table 3.2 显示了 2009 年的税率。比方说,如果你是单身且有应税收入 收入 10,000 美元,前 8,350 美元按 10% 征税,其余 1,650 美元 税率为 15%。所以,你的税是 1,082.5 美元。 Table 1 2009 U.S。联邦个人税率 边缘 税率 单身 已婚 共同申报或 合格寡妇 10% $0 – $8,350 $0 – $16,700 15% $8,351– $33,950 $16,701 – $67,900 25% $33,951 – $82,250 $67,901 – $137,050 28% $82,251 – $171,550 $137,051 – $208,850 33% $171,551 – $372,950 $208,851 – $372,950 35% $372,951+ $372,951+ 你要编写一个程序来计算个人所得税。你的程序应该 提示用户输入备案状态和应税收入并计算税金。输入 0 单身申报者和 1 名已婚联合申报者。

#filings
Single = 0
Joint = 1

#amount taxed for singles
st1 = 8350
st2 = 25599
st3 = 48299
st4 = 89299
st5 = 201399

#filing brackets for singles
s1 = 8350
s2 = 33950
s3 = 82250
s4 = 171550
s5 = 372950

#amount taxed for joint
jt1 = 16700
jt2 = 51199
jt3 = 69149
jt4 = 71799
jt5 = 164099

#filings brackets for joint
j1 = 16700
j2 = 67900
j3 = 137050
j4 = 208850
j5 = 372950

#percents 
p1 = 10/100
p2 = 15/100
p3 = 25/100
p4 = 28/100
p5 = 33/100
p6 = 35/100


#input of income and filings
filing = input('Enter the filing status:')
income = float(input('Enter the taxable income:'))

if filing==Single:
    
    if income<=s1:
        tax = income * p1
        format_tax = "{:.2f}".format(tax)
        print('Tax is', format_tax)

    elif income>s1 and income<=s2:
        i1 = income-st1
        i2 = st1*p1
        i3 = i1*p2
        tax = i3 + i2
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    elif income>s2 and income<=s3:
        i1 = income - st1
        i2 = i1 - st2
        tax1 = st1*p1
        tax2 = st2*p2
        tax3 = i2*p3
        tax = tax1+tax2+tax3
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    elif income>s3 and income<=s4:
        i1 = income - st1
        i2 = i1 - st2
        i3 = i2 - st3
        tax1 = st1*p1
        tax2 = st2*p2
        tax3 = st3*p3
        tax4 = i3*p4
        tax=tax1+tax2+tax3+tax4
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    elif income>s4 and income<=s5:
        i1 = income - st1
        i2 = i1 - st2
        i3 = i2 - st3
        i4 = i3 - st4
        tax1 = st1*p1
        tax2 = st2*p2
        tax3 = st3*p3
        tax4 = st4*p4
        tax5 = i4*p5
        tax=tax1+tax2+tax3+tax4+tax5
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    else:
        i1 = income - st1
        i2 = i1 - st2
        i3 = i2 - st3
        i4 = i3 - st4
        i5 = i4 - st5
        tax1 = st1*p1
        tax2 = st2*p2
        tax3 = st3*p3
        tax4 = st4*p4
        tax5 = st5*p5
        tax6 = i5*p6
        tax=tax1+tax2+tax3+tax4+tax5+tax6
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)


else:

 
    if income <= j1:
        tax = income * p1
        format_tax = "{:.2f}".format(tax)
        print('Tax is', format_tax)

    elif income >j1 and income<=j2:
        i1 = income-jt1
        i2 = jt1*p1
        i3 = i1*p2
        tax = i3 + i2
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    elif income>j2 and income<=j3:
        i1 = income - jt1
        i2 = i1 - jt2
        tax1 = jt1*p1
        tax2 = jt2*p2
        tax3 = i2*p3
        tax = tax1+tax2+tax3
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    elif income>j3 and income<=j4:
        i1 = income - jt1
        i2 = i1 - jt2
        i3 = i2 - jt3
        tax1 = jt1*p1
        tax2 = jt2*p2
        tax3 = jt3*p3
        tax4 = i3*p4
        tax=tax1+tax2+tax3+tax4
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    elif income>j4 and income<=j5:
        i1 = income - jt1
        i2 = i1 - jt2
        i3 = i2 - jt3
        i4 = i3 - jt4
        tax1 = jt1*p1
        tax2 = jt2*p2
        tax3 = jt3*p3
        tax4 = jt4*p4
        tax5 = i4*p5
        tax=tax1+tax2+tax3+tax4+tax5
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

    else:
        i1 = income - jt1
        i2 = i1 - jt2
        i3 = i2 - jt3
        i4 = i3 - jt4
        i5 = i4 - jt5
        tax1 = jt1*p1
        tax2 = jt2*p2
        tax3 = jt3*p3
        tax4 = jt4*p4
        tax5 = jt5*p5
        tax6 = i5*p6
        tax=tax1+tax2+tax3+tax4+tax5+tax6
        format_tax = '{:.2f}'. format(tax)
        print('Tax is', format_tax)

你的 input() 调用 returns 一个字符串,而不是一个整数。

filing = input('Enter the filing status:')

通过比较 filingSingle,您将“1”与 1 进行比较,它们具有不同的类型和不同的值。由于变量具有不同的值,您的 if 语句评估为 false,并且执行了您的 else 语句。您可能打算做的是类似以下的事情。

filing = int(input('Enter the filing status:'))

这会将字符串转换为整数,让您可以直接将其与 Single 进行比较。

您可以在 python here

中了解有关整数输入的更多信息