新手到python大会,我的代码是在正确的轨道?

use*_*918 1 python conventions

我已经阅读了一周关于python的内容,我想我会通过创建一个税收计算器来尝试它.我还没完成,但我想知道我是否在正确的轨道上,就像python编程一样.我之前只做了一点C++编程,感觉就像它显示的那样(好/坏?)

#There are six brackets define by the IRS as of 2009
#Schedule X - Single
first_bracket = 8350
second_bracket = 33950
third_bracket = 82250
fourth_bracket = 171550
fifth_bracket = 372950

def b1(a):
    a = a * .10
    return a
def b2(a):
    a = a * .15
    return a
def b3(a):
    a = a * .25
    return a
def b4(a):
    a = a * .28
    return a
def b5(a):
    a = a * .33
    return a
def b6(a):
    a = a * .35
    return a

if __name__ == '__main__': #importing is fun

    #Ask for salary
    salary = float(raw_input("Enter your salary\n"))    

    #First bracket
    if salary >= 0 and salary <= first_bracket:
        taxed = b1(salary)
        #print "You make less than $", float(first_bracket), "so your tax is $", taxed
        print taxed

    #Second bracket
    elif salary > first_bracket and salary <= second_bracket:
        taxed = b1(first_bracket) + b2(salary-first_bracket)
        #print "You make between $", first_bracket+1, "and $", second_bracket, "so your tax is $", taxed
        print taxed

    #Thrid bracket  
    elif salary > second_bracket and salary <= third_bracket:
        taxed = b1(first_bracket) + b2(second_bracket-first_bracket) + b3(salary-second_bracket)
        print taxed
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 13

对于每个括号的限制和速率,使用列表和对而不是单独的变量可能有一种更有效的方法.例如,请考虑以下事项:

# List of (upper-limit, rate) pairs for brackets.
brackets = [ (8350, .10), (33950, .15), (82250, .25), (171550, .28), (372950, .33) ]

if __name__ == '__main__':

    salary = float(raw_input("Enter your salary\n"))

    accounted_for = 0 # Running total of the portion of salary already taxed
    taxed = 0 # Running total of tax from portion of salary already examined

    for (limit, rate) in brackets:
        if salary < limit:
            taxed += ( (salary - accounted_for) * rate )
            accounted_for = salary
            break # We've found the highest tax bracket we need to bother with
        else:
            taxed += ( (limit - accounted_for) * rate )
            accounted_for = limit

    # If we went over the max defined tax bracket, use the final rate
    if accounted_for < salary:
        taxed += ( (salary - accounted_for) * 0.35 )

    print taxed
Run Code Online (Sandbox Code Playgroud)

我们的想法是,我们不想重复我们没有的代码,因为我们有多个类似数据项可供使用.除了不同的速率和限制之外,税率都具有相同的功能,因此我们希望它们作为标准计算的输入而不是它们各自的功能.


Mar*_*off 5

特别是在处理财务值时,应考虑使用十进制模块来确保输出中没有浮点错误.

当你只是制作玩具来学习一门语言时没什么大不了的,但很高兴知道以备参考:)