累积税计算器

时间:2018-09-07 02:19:57

标签: python

我正在尝试创建一个计算器来计算税金。我已经有一个输入要问他们是否单身,已婚等,以及他们赚多少钱。我已经计算出它们属于哪个支架。我遇到的麻烦是累积百分比。您知道吗,“您工资的前9,325是10%,接下来的37,950是15%”等等。我正在尝试使用

for income in range(0, 9325):

但是,如果您输入9326,它将跳至下一个括号。无论如何,这是我当前的代码(嗯,它的主要功能。您可以在https://repl.it/@Sphelix/FlusteredClumsyDemo上找到整个内容):

if thing == "1" and income <= 9325:
 print("Your tax rate is 10%")
elif thing == "1" and income <= 37950:
 print("Your tax rate is 15%")
elif thing == "1" and income <= 191650:
 print("Your income is 28%")
elif thing == "1" and income <= 416700:
 print("Your tax rate is 33%")
elif thing == "1" and income <= 418000:
 print("Your tax rate is 35%")
elif thing == "1" and income >= 418001:
 print("Your tax rate is 39.6%")

1 个答案:

答案 0 :(得分:0)

For循环通常不用于检查范围。比较运算符(FailedPrecondition: 400 no matching index found )用于此类任务。在您的情况下,收入是浮动的,因此如果要使用for循环检查所有可能的收入,则必须执行<, >, <=, >=条支票。但是,如果您想使其发挥作用,就可以做到

9325 * 2**64

如果运行此代码,您将意识到使用for循环检查每个可能的收入水平是多么低效。对于这种类型的问题,您应该使用比较运算符。您当前的代码很好,但是您可以将所有import struct def reinterpretAsInt(f): return struct.unpack('Q', struct.pack('d', f))[0] def reinterpretAsFloat(n): return struct.unpack('d',struct.pack('Q', n))[0] for testIncome in range(0,reinterpretAsInt(9325)): # print('Checking income amount: ' + str(reinterpretAsFloat(testIncome))) if income == reinterpretAsFloat(testIncome): print("Your tax rate is 10%") break 检查浓缩为一个thing == "1"语句。