2016-11-08 192 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作爲答案。 –