我的税务计算器程序怎么了?

2024-10-01 07:31:01 发布

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

def taxcalc (tax):

    income = float(raw_input('Welcome to the PAYG Tax calculator,please enter your gross income, and your net income will be displayed.\n'))

    if income <= 18200:
        print income

    elif income >= 18201 and income <= 37000:
        beforetax1 = income * 0.19
        tax = income - beforetax1

    elif income >= 37001 and income <= 80000:
        beforetax2 = income - 3572
        secondtax = beforetax2 * 0.325
        tax = income - secondtax

    elif income >= 80001 and income <= 180000:
        beforetax3 = income - 17547
        thirdtax = beforetax3 * 0.37
        tax = income - thirdtax

    elif income >= 180001:
        beforetax4 = income - 54547
        fourthtax = beforetax4 * 0.45
        tax = income - fourthtax

print 'Your net pay is $',tax

print 'The amount of tax paid is $',beforetax

除了税,它什么都不印。在

(编辑)

^{pr2}$

Tags: andyournetistaxprintelifincome
1条回答
网友
1楼 · 发布于 2024-10-01 07:31:01

这里有很多问题,你必须解决所有问题,至少包括以下问题:

  • 您的taxcalc函数有时print是一个值,有时计算一些临时值,然后忘记它们,什么也不做;它从不做的一件事实际上是return将其值传递给调用者,例如return tax, beforetax1。在
  • 您的taxcalc函数接受它不使用的tax参数。不应该
  • 您定义了一个taxcalc函数,但从未在任何地方调用它,因此它没有任何好处。你需要一些类似tax, beforetax = taxcalc()的东西。在
  • 你的变量名有误导性。你有一个名为tax的东西,它是净收入而不是税款,还有一个名为beforetax的东西,它是已付税款而不是税前收入。同样,beforetax1实际上是税收,不是税前收入,而{}是税前收入,secondtax是税收,tax是税后收入。在
  • 你的elif边界都有间隙。例如,如果有人制造了$18200.50,那就不是<= 18200,也不是{}。实际上,您并不需要每个测试的下半部分;只需执行elif income <= 37000(如果是<= 18200,那么它已经在if中处理过了,所以它不会进入这个测试)。在
  • 你的第一个案例,对于低于最低应税收入的人来说,需要和其他案例一样:计算并返回一个税收成本和一个税前收入(在这个例子中,这只是return 0, income)。你不能什么都不做,否则你会在某个地方得到某种例外,当有人想要这些值而它们不存在的时候。而且,仅仅打印收入并没有任何用处。在

还有一些东西实际上没有损坏,但应该改进:

  • 最好将raw_input移到函数之外,然后将收入作为参数传入。在
  • 没有理由在一个块中命名变量beforetax2,在另一个块中命名beforetax3。如果它们的意思是一样的,而且它们不可能妨碍彼此,就把它们都称为beforetax。在
  • 您可能想舍入到偶数美分,或者使用decimal.Decimal代替float(参见文档中的moneyd`recipes)。*

我不知道澳大利亚的情况,但在美国,如果国税局搞砸了,给你寄来一张17.3811713美元的税单,你就麻烦大了。付17.38美元,那是少付的,他们会开出罚单;付17.39美元,但没有明确说明你多付了,他们会退回你的支票,然后因为你没有按时付款而罚款。打电话给他们,他们会告诉你这不是问题,三个月后,他们因为没有支付那0.11713美分而扣了你288美元的工资,他们告诉你“我们给你的信息实际上不能保证是正确的,在法律上不算是建议”。

相关问题 更多 >