Python 練習例2

Python 100例

問題:企業が支給するボーナスは利益に応じて歩合で決まる。利益(I)が10万元以下の場合、ボーナスは10%とする。利益が10万元を超えて20万元未満の場合、10万元以下の部分は10%の歩合とし、10万元を超える部分は7.5%とする。20万元から40万元の間の場合、20万元を超える部分は5%とする。40万元から60万元の間の場合、40万元を超える部分は3%とする。60万元から100万元の間の場合、60万元を超える部分は1.5%とする。100万元を超える場合、100万元を超える部分は1%の歩合とする。キーボードから当月の利益Iを入力し、支給すべきボーナスの総額を求めよ。

プログラム分析:数直線を利用して境界を決め、位置を特定してください。

プログラムのソースコード:

実例(Python 2.0+)

#!/usr/bin/python
# -*- coding: UTF-8 -*-

i = int(raw_input('純利益:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
    if i>arr[idx]:
        r+=(i-arr[idx])*rat[idx]
        print (i-arr[idx])*rat[idx]
        i=arr[idx]
print r

実例(Python 3.0+)

#!/usr/bin/python3
 
i = int(input('純利益:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
    if i>arr[idx]:
        r+=(i-arr[idx])*rat[idx]
        print ((i-arr[idx])*rat[idx])
        i=arr[idx]
print (r)

上記の例の出力結果は次のとおりです:

净利润:120000
1500.0
10000.0
11500.0

Python 100例

その他の拡張