2016-11-08 217 views
0

试图建立一个税计算器逻辑的做法双变量:for循环(税计算器)

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) 

这对我来说很有意义,当我看着它,但对于循环导致错误。我以前见过双循环变量,但不记得如何去做。我以某种方式使用enumerateitertools

另外,我接受任何有关如何减少我在这里的嵌套循环数的建议。我相信这是可行的。任何和所有的帮助,不胜感激。

为了清楚起见,for n in range(i,i-(i+1)):部分将计算该第一个区间的税额括号。从本质上讲,我正在计算间隔的时间间隔的每个美元的税率,并将其添加到totalTaxes。效率不高,但这是我的全部。

顺便说错误是ValueError: too many values to unpack

+0

在设置“i”之前,您正在使用'tiers [i]'。 – Barmar

+0

'对a,b in zip(iterable_a,iterable_b)'? –

回答

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循环。你的逻辑是什么?

+0

好,太好了。这摆脱了错误。我现在得到0作为答案。 –