介紹
我們開發了一個個稅計算器,輸入工資后,打印應繳納的個稅。
個稅計算公式:
- 應納稅所得額 = 工資金額 - 各項社會保險費 - 起征點(3500元)
- 應納稅額 = 應納稅所得額 × 稅率 - 速算扣除數
其中各項社會保險費我們在本程序中設置為0即可,不用考慮。
稅率及速算扣除數對應表:
應納稅所得額 | 稅率 | 速算扣除數(元) |
---|---|---|
不超過 1500 元 | 3% | 0 |
超過 1500 元至 4500 元 | 10% | 105 |
超過 4500 元至 9000 元 | 20% | 555 |
超過 9000 元至 35000 元 | 25% | 1005 |
超過 35000 元至 55000 元 | 30% | 2755 |
超過 55000 元至 80000 元 | 35% | 5505 |
超過 80000 元 | 45% | 13505 |
例如工資金額為 5000,那么應納稅所得額為 1500(5000-3500),應納稅額為 45 元(1500 * 3% - 0)。
程序使用 Python3 運行,執行過程如下
需要注意,程序執行的參數只有一個,並且參數為工資金額,需要為整數,如果參數數量不准確或者無法轉成整數,需要打印下面這一行的錯誤信息:
目標
完成任務需要達成的目標:
- 程序存放的位置
/home/shiyanlou/calculator.py
- 程序執行的第一個參數為工資金額,即程序執行方式為
./calculator.py 3500
- 程序返回的數字保留兩位小數,如果是整數,仍然需要保留
xxx.00
這種形式。
提示語
- 將參數轉成整數可以使用
int()
,如果不能正確轉成整數(例如 int('abcd')),需要處理異常並打印上面的錯誤信息。 - 輸出保留兩位小數可以使用字符串的 format 函數格式化,例如
format(1.2345, ".2f")
得到的就是有兩位小數的字符串'1.23'
- 命令行參數獲取方法是使用 sys 模塊的
sys.argv
,不要使用 input() 獲取輸入,其中sys.argv[0]
為腳本名稱,sys.argv[1]
為第一個參數,示例:
最后,因為后續的挑戰將會用到現在寫的代碼,請使用 下載代碼
保存到本地或者提交到自己的 Github。
注意
- try except 判斷異常的時候只需要包含可能出現異常的代碼,比如將輸入的字符串轉換成 int 的時候,不需要包含所有的代碼
- Python 中對每行的縮進要求嚴格,務必不要TAB與空格混用,建議使用空格來進行縮進,縮進使用4個空格。
知識點
- Python3 程序開發
- 變量與數據類型
- 輸出
- 命令行參數
- 運算
- 字符串
- 控制結構
- 異常處理
import sys def calculator(): try: a = int(sys.argv[1]) salary = a - 3500 if salary > 80000: cal_salary = salary * 0.45 - 13504 elif salary > 55000: cal_salary = salary * 0.35 - 5505 elif salary > 35000: cal_salary = salary * 0.3 - 2755 elif salary > 9000: cal_salary = salary * 0.25 - 1005 elif salary > 4500: cal_salary = salary * 0.2 - 555 elif salary > 1500: cal_salary = salary * 0.1 - 105 else: cal_salary = salary * 0.03 print("{:.2f}".format(cal_salary)) except: print("Parameter Error") calculator()