我正在尝试创建一个计算器来计算税金。我已经有一个输入要问他们是否单身,已婚等,以及他们赚多少钱。我已经计算出它们属于哪个支架。我遇到的麻烦是累积百分比。您知道吗,“您工资的前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%")
答案 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"
语句。