尝试为逻辑实践创建税收计算器:
import sys
marital = sys.argv[1]
salary = sys.argv[2]
totalTaxes = 0
if marital == "single":
tiers = [415050,413350,190150,91150,37650,9275]
taxrates = [.35,.33,.28,.25,.15,.10]
if salary > tiers[i]:
for i, j in tiers, taxrates:
for n in range(i-(i+1)):
while n > tiers[i]:
totalTaxes += (n * .35)
当我看到它时,这对我来说很有意义,但for循环导致错误。我以前见过双变量for循环,但不记得怎么做了。我是否以某种方式使用enumerate
或itertools
?
此外,我对如何减少我在这里的嵌套循环数量的任何建议持开放态度。我确信那是可行的。非常感谢任何和所有帮助。
为清楚起见,for n in range(i,i-(i+1)):
部分是计算第一个间隔的税收括号。基本上我正在计算区间中每个美元的间隔税率,并将其添加到totalTaxes。效率不高,但这就是我的全部。
顺便错误是ValueError: too many values to unpack
答案 0 :(得分:0)
for循环的主要问题是你误用了它。 For i in a_list
将迭代a_list
中的每个项目,并将项目值填充到i(而不是索引)。此外,如果要在for循环中将两个列表组合在一起,则应使用zip
。
import sys
marital = sys.argv[1]
salary = sys.argv[2]
totalTaxes = 0
if marital == "single":
tiers = [415050,413350,190150,91150,37650,9275]
taxrates = [.35,.33,.28,.25,.15,.10]
for tier, taxrate in zip(tiers, taxrates):
...
我不确定你在for循环中做了什么。 range(i-(i+1))
与range(-1)
相同,这意味着程序永远不会运行while循环。你的逻辑是什么?