第一週挑戰:實現個稅計算器

在Windows下的自帶Ubuntu缺少很多包,無法直接下載pip3 ,下載也很麻煩,所以前期寫代碼用Windows自帶的Ubuntu吧,後期就新建個虛擬機,再用MobaXterm很方便

開發了一個個稅計算器,輸入工資後,打印應繳納的個稅。

個稅計算公式:

應納稅所得額 = 工資金額 - 各項社會保險費 - 專項扣除 - 起徵點(5000元)
納稅 = 應納稅所得額 × 稅率 - 速算扣除數
其中各項社會保險費和專項扣除我們在本程序中設置爲 0 即可,不用考慮。
需要注意,程序執行的參數只有一個,並且參數爲工資金額,需要爲整數,如果參數數量不準確或者無法轉成整數,需要使用 print 打印錯誤信息,代碼如下:

print("Parameter Error")

將參數轉成整數可以使用 int() ,如果不能正確轉成整數(例如 int(‘abcd’)),需要處理異常並打印上面的錯誤信息。
輸出保留兩位小數可以使用字符串的 format 函數格式化,例如 format(1.2345, “.2f”) 得到的就是有兩位小數的字符串 ‘1.23’
命令行參數獲取方法是使用 sys 模塊的 sys.argv,不要使用 input() 獲取輸入,其中 sys.argv[0] 爲腳本名稱, sys.argv[1] 爲第一個參數,

# -*- coding: utf-8 -*-
import sys


def main():
    # 檢查命令行參數合法性,並轉換爲正確類型
    if len(sys.argv) != 2:
        print('Parameter Error')
        exit()
    #但凡輸入都需要進行異常處理,防止出錯,
    try:
        income = int(sys.argv[1])
    except ValueError:
        print('Parameter Error')
        exit()

    # 扣除起徵點
    value = income - 3500
    # 依據落入的稅率區間,按照相應的稅率參數計算稅費
    if value <= 0:
        result = 0
    elif 0 < value <= 1500:
        result = value * 0.03 - 0
    elif 1500 < value <= 4500:
        result = value * 0.1 - 105
    elif 4500 < value <= 9000:
        result = value * 0.2 - 555
    elif 9000 < value <= 35000:
        result = value * 0.25 - 1005
    elif 35000 < value <= 55000:
        result = value * 0.3 - 2755
    elif 55000 < value <= 80000:
        result = value * 0.35 - 5505
    else:
        result = income * 0.45 - 13505

    # 打印結果
    print('{:.2f}'.format(result))

#有下面這一行代碼,說明當這個calculator.py當作模塊插入其他.py文件的時候不執行這行代碼,但是可以用main()函數,如果不建立main函數的話,就一段代碼都執行不了,只能依靠python3 文件名 金額來執行文件了
if __name__ == '__main__':
    main()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章