4

範囲が 70000 以上の for ループを作成するにはどうすればよいですか? 所得税の for ループを実行していますが、所得が 70000 を超えると 30% の税金がかかります。私は何かをしfor income in range(income-70000)ますか?

最初はループを使用しないコードを開発し、問題なく動作しましたが、コードにループを組み込む必要があると通知されました。これは私が持っているものですが、for ループを使用する意味がありません。誰かが私を助けることができますか?

def tax(income):

for income in range(10001):
    tax = 0
    for income in range(10002,30001):
        tax = income*(0.1) + tax
        for income in range(30002,70001):
            tax = income*(0.2) + tax
            for income in range(70002,100000):
                tax = income*(0.3) + tax
print (tax)

さて、while ループを試してみましたが、値が返されません。あなたの考えを教えてください。所得に基づいて所得税を計算する必要があります。最初の10000ドルは税金がありません。次の 20000 年には 10% です。次の 40000 には 20% があります。70000 を超えると 30% になります。

def taxes(income):

income >= 0
while True:
    if income < 10000:
        tax = 0
    elif income > 10000 and income <= 30000:
        tax = (income-10000)*(0.1)
    elif income > 30000 and income <= 70000:
        tax = (income-30000)*(0.2) + 2000
    elif income > 70000:
        tax = (income - 70000)*(0.3) + 10000
return tax
4

5 に答える 5

17

Q: 範囲が 70000 以上の for ループを作成するにはどうすればよいですか?

A: itertools.count()メソッドを使用します。

import itertools

for amount in itertools.count(70000):
    print(amount * 0.30)

Q: 所得に基づいて所得税を計算する必要があります。最初の10000ドルは税金がありません。次の 20000 年には 10% です。次の 40000 には 20% があります。70000 を超えると 30% になります。

A: bisect モジュールは、範囲内でルックアップを行うのに最適です。

from bisect import bisect

rates = [0, 10, 20, 30]   # 10%  20%  30%

brackets = [10000,        # first 10,000
            30000,        # next  20,000
            70000]        # next  40,000

base_tax = [0,            # 10,000 * 0%
            2000,         # 20,000 * 10%
            10000]        # 40,000 * 20% + 2,000

def tax(income):
    i = bisect(brackets, income)
    if not i:
        return 0
    rate = rates[i]
    bracket = brackets[i-1]
    income_in_bracket = income - bracket
    tax_in_bracket = income_in_bracket * rate / 100
    total_tax = base_tax[i-1] + tax_in_bracket
    return total_tax
于 2013-11-21T19:47:34.887 に答える
-1

私はPythonを知りませんが、あなたの問題は言語でもありません。条件について読む必要があります。すべての FOR は必要ありません。1 つだけで、ルールに従って IFS を実行します。

于 2013-11-21T20:57:07.853 に答える