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
除了税,它不会打印任何内容。
(编辑)
def taxcalc ():
income = decimal.Decimal(raw_input('Welcome to the PAYG Tax calculator, please enter your gross income, and your net income will be displayed.\n'))
if income <= 18200:
net = income
elif income > 18200 and income <= 37000:
tax = income * 0.19
net = income - tax
elif income > 37000 and income <= 80000:
tax = income - 3572
tax = tax * 0.325
net = income - tax
elif income > 80000 and income <= 180000:
tax = income - 17547
tax = tax * 0.37
net = income - tax
elif income > 180000:
tax = income - 54547
tax = tax * 0.45
net = income - tax
print "Your net income is $",net
taxcalc()
答案 0 :(得分:2)
这里有一大堆问题,你必须解决所有这些问题,包括至少以下内容:
taxcalc
函数有时print
是一个值,有时会计算一些临时值,然后忘记它们并且什么都不做;从来没有做过的事情实际上是return
给调用者的价值,例如return tax, beforetax1
。taxcalc
函数会使用不使用的tax
参数。它不应该。taxcalc
函数,但绝不会在任何地方调用,因此它没有任何好处。您需要tax, beforetax = taxcalc()
。tax
的东西,它是净工资而不是税,以及一个名为beforetax
的东西,它是纳税额而不是税前收入。同样,beforetax1
实际上是税,而不是税前收入,而beforetax2
是税前收入,secondtax
是税,tax
是后税-tax income。elif
界限都有差距。例如,如果某人制作$18200.50
,那不是<= 18200
,也不是>= 18201
。你实际上并不需要每个测试的下半部分;只需执行elif income <= 37000
(如果是<= 18200
,它就已经在if
处理,因此无法进行此测试。)return 0, income
) 。你不能只做没有,或者当有人想要这些价值并且它们不存在时,你会在某个地方得到某种例外。此外,只是打印收入没有任何用处。还有一些事实上没有被破坏,但应该改进:
raw_input
移到函数之外,然后将收入作为参数传递。beforetax2
而在另一个区块中命名beforetax3
。如果他们两个意思相同,并且他们无法相互接触,只需将它们称为beforetax
。decimal.Decimal
而不是float
(请参阅文档中的moneyd`食谱)。 * *我不知道澳大利亚,但在美国,如果美国国税局搞砸了并以17.3811713美元的价格向您发送税单,那你就麻烦大了。支付17.38美元,这是支付不足,他们将发布处罚;支付17.39美元,但未明确说明您支付过高费用,他们将退还您的支票,然后罚款,因为您没有按时付款。打电话给他们,他们会告诉你这不是问题,然后三个月后,他们因为不支付0.11713美分而以288美元的价格装修你的工资,他们告诉你“我们给你的信息实际上并不能保证是是正确的,并不合法地作为建议“。