如何使用python有条件地存储一个值?

2024-10-02 12:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

所以基本原理是,我试图让一个用户输入他们的年薪,然后程序会运行一组if语句,然后返回他们所处的税级,从他们的年薪中减去金额,返回他们的总收入。主要的问题是,它将运行正确的金额为0-9525美元,但一旦你跳到12%和22%,它并没有使他们的。比如,如果你输入100000美元,它只会从中扣除12%,而它应该扣除24%。以下是当前形式的Python代码:

#Takes someone's yearly salary
yearlySalary = eval(input("Please enter your yearly salary: "))

if(yearlySalary < 9525):
    tax = yearlySalary * .10
    yearlySalary = yearlySalary-tax

elif(yearlySalary > 9526 && yearlySalary < 38700):
    tax = yearlySalary * .12
    yearlySalary = yearlySalary-tax

elif(range (38701, 82500)):
    tax = yearlySalary * .22
    yearlySalary = yearlySalary-tax

elif(range (82501, 157500)):
    tax = yearlySalary * .24
    yearlySalary = yearlySalary-tax

elif(range(157501, 200000)):
    tax = yearlySalary * .32
    yearlySalary = yearlySalary-tax

elif(range(200001, 500000)):
    tax = yearlySalary * .35
    yearlySalary = yearlySalary-tax

elif(yearlySalary > 500001):
    tax = yearlySalary * .37
    yearlySalary = yearlySalary-tax

Tags: 用户程序ifrange语句金额形式基本原理
3条回答

这里有一些关于税级如何工作的问题;税级应该以相反的顺序排列,以便首先抓住最高的税级,并且只有超过税级的金额才应该按该金额征税。你知道吗

另外,在您的示例中,elif(range (82501, 157500)):不会捕获年薪=100000,因为else语句没有断言年薪是否在该范围内。你知道吗

由于使用了不正确的“AND”运算符,它被捕获在12%中:使用and而不是&&。你知道吗

使用^{}

  • 它允许更干净的代码
  • yearlySalary是装箱的,没有混乱的代码,如:
    • yearlySalary > 9526 & yearlySalary < 38700
    • elif(yearlySalary in range (38701, 82500))
  • 对于以下代码,箱子大小如下
    • 0-9525为10%
    • 9526-38700的12%
    • 38701-82500为22%
    • 82501-157500的24%
    • 157501-200000的32%
    • 200001-500000的35%
    • 500001及以上为37%
  • .digitize的工作原理是找到bins的索引,其中income落在其中。给定索引,在tax_per中找到相应的值。你知道吗
  • bin_用作变量,因为bin是一个内部python函数,我们不会覆盖内部函数。你知道吗
import numpy as np

def tax_bracket(income: float) -> float:
    tax_per = np.array([.10, .12, .22, .24, .32, .35, .37])
    bin_ = np.digitize(income, bins=[9526, 38701, 82501, 157501, 200001, 500001])
    return income - income*(tax_per[bin_])


yearlySalary = float(input("Please enter your yearly salary: "))
print(tax_bracket(yearlySalary))

输出:

Please enter your yearly salary:  37524
33021.12

使用if - elif - else

  • 从大到小排列箱子。你知道吗
def old_way(yearlySalary):

    if yearlySalary > 500000:
        tax = yearlySalary * .37
        yearlySalary = yearlySalary-tax

    elif yearlySalary > 200000:
        tax = yearlySalary * .35
        yearlySalary = yearlySalary-tax

    elif yearlySalary > 157500:
        tax = yearlySalary * .32
        yearlySalary = yearlySalary-tax

    elif yearlySalary > 82500:
        tax = yearlySalary * .24
        yearlySalary = yearlySalary-tax

    elif yearlySalary > 38700:
        tax = yearlySalary * .22
        yearlySalary = yearlySalary-tax

    elif yearlySalary > 9525:
        tax = yearlySalary * .12
        yearlySalary = yearlySalary-tax

    else:
        tax = yearlySalary * .10
        yearlySalary = yearlySalary-tax

    return yearlySalary

你必须改变你的elif,比如:

elif(yearlySalary in range (38701, 82500)):

想知道你的年薪是否在这个范围内

相关问题 更多 >

    热门问题