6

この問題では、最初の 10,000 ドラックは課税されず、次の 20,000 ドラックは 10% 課税され、次の 40,000 ドラックは 20% 課税され、最初の 70,000 ドラック以降は 30% 課税されます。私はPythonにはかなり慣れていませんが、これは私がこれまでに持っているものです。どこで間違ったのかわかりません。「税」変数を定義していないためだと思いますが、よくわかりません。どんな助けでも大歓迎です。ありがとう!

**ユーザーが負の数を入力し、これを for ループに追加する方法がわからない場合も、コードを終了する必要があります。

def income(drach):

    for drach in range(10000):
        tax = 0
    for drach in range(10000 , 30000):
        tax = ((drach - 10000)*0.1)
    for drach in range(30000 , 70000):
        tax = ((drach - 30000)*0.2) + 2000
    for drach in range(70000 , 10**999):
        tax = ((drach - 70000)*0.3) + 10000

    print tax
4

6 に答える 6

2

このキーワードforは、イテラブルをループするために使用されます。例えば

for drach in range(10000):
    tax = 0

は、範囲 0、1、2、...、9998、9999 のすべての値を に割り当て、それぞれに対してdrach実行tax = 0します。ifこれはほぼ間違いなく、あなたが望むものではありませんfor

max()関数を使用して、使用を避けることもできますif

tax = max(drach - 10000, 0) * 0.1 + 
      max(drach - 30000, 0) * 0.1 +
      max(drach - 70000, 0) * 0.1
于 2013-10-01T16:09:57.900 に答える
0

負数ビットについて -

if drach < 0:
    break

drach が負の場合、for ループを終了します。詳細については、Python のフロー制御ツールの詳細を参照してください。ユーザー入力を取得するときにこれを行う必要があります。ユーザー税を計算しているときではありません。

税金の計算に関しては、 の範囲で for ループを実行したくないでしょうdrachs。それはあなたが必要とするよりもはるかに多くの計算です。

累進課税と呼ばれるものを計算する必要があります。

これが、累進税を計算するための私のデータ構造と関連する関数です。編集- 私の機能でいくつかの間違いを犯しました。今は正しいはずです。

tax_bracket = (
       #(from, to, percentage)
        (0,     10000, None),
        (10000, 30000, .10),
        (30000, 70000, .20),
        (70000, None,  .30),
        )


def calc_tax(drach):
    tax = 0

    for bracket in tax_bracket:
        # If there is no tax rate for this bracket, move on
        if not bracket[2]:
            continue

        # Check if we belong in this bracket
        if drach < bracket[0]:
            break

        # Last bracket
        if not bracket[1]:
            tax += ( drach - bracket[0] ) * bracket[2]
            break

        if drach >= bracket[0] and drach >= bracket[1]:
            tax += ( bracket[1] - bracket[0] ) * bracket[2]
        elif drach >= bracket[0] and drach <= bracket[1]:
            tax += ( drach - bracket[0] ) * bracket[2]
        else:
            print "Error"

    return tax



income = 50000

tax = calc_tax(income)
print tax
于 2013-10-01T16:02:09.490 に答える