2017-09-08 4 views
0

免責事項:私は16歳で、Aレベルを始めました。コンピューティングは私の主題の1つです。複数の範囲を検索するにはどうすればよいですか?

私は税率計算機を作るために挑戦しました。私は給与が正しい税金の割引を受けるために取得しようとしている問題を抱えている:

personal_allowance = 11500  
basic_rate = range(11501,45001)  
higher_rate = range(45002,150001) 
additional_rate = range(150002,(1 ** 15)) 

br_tax = float(0.2) 
hr_tax = float(0.4) 
ad_tax = float(0.45) 

あなたは数字を区別する際にトラブルがある:

私は自分自身をソートするとコメント行を取得するにはどうすればよい
#if not income_amount in basic_rate: 
    print("You pay 20% tax. You will pay:\n£"+str("%.2f" % round((income_amount * br_tax),2))) 
    income_amount = 0 
    time.sleep(0.6) 
    print("-------------") 
    time.sleep(2) 
    Start() 

私はより高い給料のものも持っていますが、他の範囲の他のものよりもむしろこのブロックにすべてデフォルトです。明らかに<>は機能せず、notinisの組み合わせも役に立たないようです。

私のコードは私に正しく表示されないので、アスタリスクをダブルアスタリスクとして使用しますか?

additional_rate = range(150002,(1 ** 15)) 
+1

として働く(主にそれがで印刷した行の前に 'income_amountは= 0 'の定義を移動し、' if'句のコメントを解除)のコードは私のために働くようです。私は入力します。 '60000'となり、税率として' 12000.0'が返されます。それは起こるはずのものではありませんか?何がうまくいかないのか、もっと説明していただけますか?予想される出力と誤った出力のサンプル入力? – davedwards

+0

'**'演算子はべき乗をしますが、間違った引数を与えているようです。 '1 ** 15 'は' '1'です(* 1 *のべき乗は1になります)。私はあなたが '10 ** 15'を望んでいると思っています。浮動小数点数の指数表記法と混同しているかもしれません。ここで '1e15'は' 1.0 * 10 ** 15'と等価です。 – Blckknght

答えて

0

私が理解できるところでは、異なる所得スラブに基づいて異なる税率を適用する必要がありますか?

pythonの範囲関数は、シーケンスを作成します。例えば、 range (1,5)は、シーケンス1,2,3,4.です。ここでは不要です。

代わりにif elseを使用すると、プログラムが簡単になります。

income = 20000 # income of the person 

# Rates 
br_tax = float(0.2) 
hr_tax = float(0.4) 
ad_tax = float(0.45) 
tax_to_deduct = 0 

# Calculate the tax on the amount first 

if income>=11501 and income <= 45001: 
    tax_to_deduct = br_tax*income 

# Then subtract this from your original income. 
print ('Tax:',tax_to_deduct) 
print ('Income after tax:',income-tax_to_deduct) 

if elseはあなたのコードははるかに直感的になります使用して、すべてのブラケットのために同じことを行います。私はあなたの質問を誤解しているかもしれませんが、その場合は教えてください。

はい、二重のアスタリスクはいくつかの小さな調整を指数

+0

Pythonの連鎖比較によって、コードを少し上回らせることができます。 '11501 <=所得<45001'、あるいはより良い' 11500 Blckknght

+0

@ sarthank_khannaすばらしく、ありがとう!私はそれをそうすると思いましたが、私はそれを行うより速い方法があったかもしれないと思っていました。これは、私がどのようにしたいか正確に動作します。ありがとうございました! –

関連する問題