首页 > 解决方案 > 大约一半的 if 语句无法正常工作

问题描述

我将使用基本运算符制作一个 python 程序来向用户索取收入,以便计算 2017 年和 2018 年的累进税。输出应如下所示:

Income: 15000
2017 tax: (tax amount here) #will skip the math for samples
2018 tax: (tax amount here)

到目前为止,我的程序会生成 2017 / 2018 年的两个打印件,但将停止在 2018 年嵌套的 if 括号 82501 到 157500(嵌套在第 4 个 elif 中)......这是我现在的程序,因为它很长我会标出它停止工作的地方。

income = float(input("Enter your income to calculate tax: "))

#Loop input/calculations
while income > 0:
    print("----------------------------------------------")
    if income >= 0 and income <= 9325:
        bracket1 = income * 0.10
        tax2017 = bracket1
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
        if income >= 0 and income <= 9525:
            newbracket1 = income * 0.10
            tax2018 = newbracket1
            print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    elif income >= 9326 and income <= 37950:
        bracket1 = 9325 * 0.10
        bracket2 = (income - 9326) * 0.15
        tax2017 = bracket1 + bracket2
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
        if income >= 9526 and income <=38700:
            newbracket1 = 9526 * 0.10
            newbracket2 = (income - 9525) * 0.12
            tax2018 = newbracket1 + newbracket2
            print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    elif income >= 37951 and income <= 91900:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (income - 37951) * 0.25
        tax2017 = bracket1 + bracket2 + bracket3
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
        if income >= 38701 and income <= 82500:
            newbracket1 = 9526 * 0.10
            newbracket2 = (38700 - 9526) * 0.12
            newbracket3 = (income - 38700) * 0.22
            tax2018 = newbracket1 + newbracket2 + newbracket3
            print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    elif income >= 91901 and income <= 191650:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (income - 91901) * 0.28
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
        if income >= 82501 and income <= 157500: #HERE STOPS WORKING, the 2018 from here on doesn't print
            newbracket1 = 9526 * 0.10
            newbracket2 = (38700 - 9526) * 0.12
            newbracket3 = (82500 - 38701) * 0.22
            newbracket4 = (income - 82500) * 0.24
            tax2018 = newbracket1 + newbracket2 + newbracket3 + newbracket4
            print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    elif income >= 191651 and income <= 416700:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (191650 - 91901) * 0.28
        bracket5 = (income - 191651) * 0.33
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4 + bracket5
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
        if income >= 157501 and income <= 200000:
            newbracket1 = 9526 * 0.10
            newbracket2 = (38700 - 9526) * 0.12
            newbracket3 = (82500 - 38701) * 0.22
            newbracket4 = (157500 - 82501) * 0.24
            newbracket5 = (income - 157500) * 0.32
            tax2018 = newbracket1 + newbracket2 + newbracket3 + newbracket4 + newbracket5
            print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    elif income >= 416701 and income <= 418400:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (191650 - 91901) * 0.28
        bracket5 = (416700 - 191650) * 0.33
        bracket6 = (income - 416701) * 0.35
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4 + bracket5 + bracket6
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
        if income >= 200001 and income <= 500000:
            newbracket1 = 9526 * 0.10
            newbracket2 = (38700 - 9526) * 0.12
            newbracket3 = (82500 - 38701) * 0.22
            newbracket4 = (157500 - 82501) * 0.24
            newbracket5 = (200000 - 157501) * 0.32
            newbracket6 = (income - 200001) * 0.35
            tax2018 = newbracket1 + newbracket2 + newbracket3 + newbracket4 + newbracket5 + newbracket6
            print("2018 tax: ",tax2018)
        income = float(input("\nEnter your income as and integer with no commas: "))
    elif income >= 418401:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (191650 - 91901) * 0.28
        bracket5 = (416700 - 191650) * 0.33
        bracket6 = (418400 - 416700) * 0.35
        bracket7 = (income - 418401) * 0.396
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4 + bracket5 + bracket6 + bracket7
        print("Income: ",income)
        print("2017 tax: ",tax2017)
        income = float(input("\nEnter your income as and integer with no commas: "))

    else:
        print("invalid")

我已经标记了行不通的行。澄清一下,嵌套的 if 和之前的打印输出 2017 年和 2018 年的结果,但是当收入在标记范围内或更大时,只会打印 2017 年的税收。

我在收入 82502 及以上的结果是这样的:

Enter your income to calculate tax: 82502
----------------------------------------------
Income:  82502.0
2017 tax:  16364.00

Enter your income as and integer with no commas: 

已解决:感谢所有评论和回答,他们为我解决了一些问题!这是我重新设计的,似乎可以工作,所以我很满意。我将添加更多计算,因此希望也能顺利进行 :)

income = float(input("Enter your income to calculate tax: "))

#Loop input/calculations
while income > 0:
    if income >= 0 and income <= 9325:
        bracket1 = income * 0.10
        tax2017 = bracket1
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
    if income >= 0 and income <= 9525:
        newbracket1 = income * 0.10
        tax2018 = newbracket1
        print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    if income >= 9326 and income <= 37950:
        bracket1 = 9325 * 0.10
        bracket2 = (income - 9326) * 0.15
        tax2017 = bracket1 + bracket2
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
    if income >= 9526 and income <=38700:
        newbracket1 = 9526 * 0.10
        newbracket2 = (income - 9525) * 0.12
        tax2018 = newbracket1 + newbracket2
        print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    if income >= 37951 and income <= 91900:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (income - 37951) * 0.25
        tax2017 = bracket1 + bracket2 + bracket3
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
    if income >= 38701 and income <= 82500:
        newbracket1 = 9526 * 0.10
        newbracket2 = (38700 - 9526) * 0.12
        newbracket3 = (income - 38700) * 0.22
        tax2018 = newbracket1 + newbracket2 + newbracket3
        print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    if income >= 91901 and income <= 191650:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (income - 91901) * 0.28
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
    if income >= 82501 and income <= 157500:
        newbracket1 = 9526 * 0.10
        newbracket2 = (38700 - 9526) * 0.12
        newbracket3 = (82500 - 38701) * 0.22
        newbracket4 = (income - 82500) * 0.24
        tax2018 = newbracket1 + newbracket2 + newbracket3 + newbracket4
        print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    if income >= 191651 and income <= 416700:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (191650 - 91901) * 0.28
        bracket5 = (income - 191651) * 0.33
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4 + bracket5
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
    if income >= 157501 and income <= 200000:
        newbracket1 = 9526 * 0.10
        newbracket2 = (38700 - 9526) * 0.12
        newbracket3 = (82500 - 38701) * 0.22
        newbracket4 = (157500 - 82501) * 0.24
        newbracket5 = (income - 157500) * 0.32
        tax2018 = newbracket1 + newbracket2 + newbracket3 + newbracket4 + newbracket5
        print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    if income >= 416701 and income <= 418400:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (191650 - 91901) * 0.28
        bracket5 = (416700 - 191650) * 0.33
        bracket6 = (income - 416701) * 0.35
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4 + bracket5 + bracket6
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
    if income >= 200001 and income < 500000:
        newbracket1 = 9526 * 0.10
        newbracket2 = (38700 - 9526) * 0.12
        newbracket3 = (82500 - 38701) * 0.22
        newbracket4 = (157500 - 82501) * 0.24
        newbracket5 = (200000 - 157501) * 0.32
        newbracket6 = (income - 200001) * 0.35
        tax2018 = newbracket1 + newbracket2 + newbracket3 + newbracket4 + newbracket5 + newbracket6
        print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))
    if income >= 418401:
        bracket1 = 9325 * 0.10
        bracket2 = (37950 - 9325) * 0.15
        bracket3 = (91901 - 37950) * 0.25
        bracket4 = (191650 - 91901) * 0.28
        bracket5 = (416700 - 191650) * 0.33
        bracket6 = (418400 - 416700) * 0.35
        bracket7 = (income - 418401) * 0.396
        tax2017 = bracket1 + bracket2 + bracket3 + bracket4 + bracket5 + bracket6 + bracket7
        print("Income: ",income)
        print("2017 tax: ",format(tax2017,'.2f'))
    if income >= 500000:
        newbracket1 = 9526 * 0.10
        newbracket2 = (38700 - 9526) * 0.12
        newbracket3 = (82500 - 38701) * 0.22
        newbracket4 = (157500 - 82501) * 0.24
        newbracket5 = (200000 - 157501) * 0.32
        newbracket6 = (500000 - 200001) * 0.35
        newbracket7 = (income - 500000) * 0.37
        tax2018 = newbracket1 + newbracket2 + newbracket3 + newbracket4 + newbracket5 + newbracket6 + newbracket7
        print("2018 tax: ",format(tax2018,'.2f'))
        income = float(input("\nEnter your income as and integer with no commas: "))

    else:
        print("-------------------")

标签: pythonpython-3.xif-statementprinting

解决方案


只需完成程序将要执行的语句

income =  82502.0

将进入

elif income >= 37951 and income <= 91900:

但是对于 2018 年的计算,它不会满足里面的条件

    if income >= 38701 and income <= 82500:

所以它无法计算 2018 年。它不会到达你标记它的地步。

2017 年的计算应独立于 2018 年的计算。在很多情况下,您的计算不会打印 2018 年的税款。

但是您确实进行了良好的测试,以发现您的程序无法正常工作。边缘情况通常会出现问题。


推荐阅读