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}$
这里有很多问题,你必须解决所有问题,至少包括以下问题:
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美元的工资,他们告诉你“我们给你的信息实际上不能保证是正确的,在法律上不算是建议”。
相关问题 更多 >
编程相关推荐