2016-11-08 9 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) 

これは私には意味があります。私は前に二重変数のループを見てきましたが、それらを行う方法を覚えていません。何らかの形でenumerateまたはitertoolsを使用しますか?

また、私はここにあるネスティングループの数を減らす方法に関する提案をしています。私はそれが可能だと確信しています。すべての助けが大歓迎です。

分かりやすくするために、for n in range(i,i-(i+1)):部分は、その最初の期間の税額控除を計算することです。基本的には、インターバルの各ドルのインターバルの税率を計算し、totalTaxesにそれを加算します。それほど効率的ではありませんが、それだけです。道のエラーにより、

ValueError: too many values to unpack

+0

あなたは 'i'を設定する前に' tiers [i] 'を使っています。 – Barmar

+0

'for a、zip内のb(iterable_a、iterable_b)'? –

答えて

0

ループのための主な問題は、あなたがそれを誤用です。 For i in a_listは各アイテムをa_listで繰り返し、アイテム値をi(インデックスではありません)に設定します。また、forループで2つのリストを組み合わせたい場合は、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を得ています。 –