當我輸入 0 時,此代碼遵循聯名賬戶而不是單身賬戶,我無法弄清楚。是不是編碼錯了?我錯過了什么嗎?我不知道如何解決它。謝謝!
問題描述:美國聯邦個人所得稅是根據申報狀態和應納稅所得額計算的。有四種申報狀態:單身申報和已婚聯合申報。稅率每年都不一樣。表 3.2 顯示了 2009 年的稅率。例如,如果您是單身,應稅收入為 10,000 美元,則前 8,350 美元的稅率為 10%,其余 1,650 美元的稅率為 15%。所以,你的稅是 1,082.5 美元。表 1 2009 年美國聯邦個人稅率 邊際稅率 單身 已婚 聯合申報或合格寡婦 10% $0 – $8,350 $0 – $16,700 15% $8,351– $33,950 $16,701 – $67,900 25% $33,951 – $82,250 $67,901 – $137,201052 $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)
uj5u.com熱心網友回復:
您的 input() 呼叫回傳一個字串,而不是整數。
filing = input('Enter the filing status:')
通過比較filing,Single您將“1”與 1 進行比較,它們具有不同的型別和不同的值。由于變數具有不同的值,因此您的 if 陳述句評估為 false,并且您的 else 陳述句被執行。您可能打算做的事情類似于以下內容。
filing = int(input('Enter the filing status:'))
這會將字串轉換為整數,允許您直接將其與Single.
您可以在此處了解有關 python 中整數輸入的更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432500.html
上一篇:為什么這個If陳述句不能正確地將存盤的變數與陣列中的元素進行比較?[復制]
下一篇:回圈多個列以根據條件生成新變數
