在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()