瘋狂Python講義Unit4 數字轉人民幣讀法

2021-10-21 15:32:54 字數 2912 閱讀 9270

#!/usr/bin/python3

'''num transfer to rmb

借鑑了講義中4位的數字字串轉換成中文的函式

優化了小數部分和0的處理,仍舊不夠完善

'''# 分離整數和小數部分

def divide(num):

inttemp=int(num)

fractiontemp = round((num-inttemp)*100) # round()函式 用於四捨五入後取整

return(str(inttemp),str(fractiontemp))

hanzilist=["零","壹","貳","叄","肆","伍","陸","柒","捌","玖"]

unitlist=["十","百","千"]

# 將四位數字轉為大寫漢字

def four2hanzi(inttemp):

hanzitemp=""

for i in range(len(inttemp)):

index=int(inttemp[i])

# 依次遍歷數字字串的每一位數字,為4位數字設計,相容1-3位

if inttemp[i]!="0" and i!=len(inttemp)-1:

# 如果不是最後一位數字,而且數字不是零,則需要新增單位(千、百、十)

hanzitemp+=str(hanzilist[index])+unitlist[len(inttemp)-2-i]

else:

hanzitemp+=hanzilist[index]

return hanzitemp

# 將兩位小數轉為x角x分

unitlist2=["分","角"]

def fraction2hanzi(fractiontemp):

fractionhanzitemp=""

if len(fractiontemp)==0:

return fractionhanzitemp

elif len(fractiontemp)==1:

if fractiontemp[0]=="0":

return fractionhanzitemp

else:

return hanzilist[int(fractiontemp[0])]+"角"

elif len(fractiontemp)==2:

index0=int(fractiontemp[0])

index1=int(fractiontemp[1])

if fractiontemp[0]!="0"and fractiontemp[1]!="0":

return hanzilist[index0]+"角"+hanzilist[index1]+"分"

elif fractiontemp[0]=="0" and fractiontemp[1]=="0":

return fractionhanzitemp

elif fractiontemp[0]=="0" and fractiontemp[1]!="0":

return hanzilist[index1]+"分"

elif fractiontemp[0]!="0" and fractiontemp[1]=="0":

return hanzilist[index0] + "角"

else:

pass

return fractionhanzitemp

# 迴圈比較去重,為重複的0設計

def quchong(strhan):

strresult = ''

strresult += strhan[0]

index = 0

for i in range(1, len(strhan)):

if strhan[i] != strhan[index]:

strresult+=(strhan[i])

index+=1

return strresult

# 數字轉人民幣,對0的處理仍舊不夠完善

def num2rmb():

num = float(input("請輸入乙個浮點數(小數點保留2位): "))

inttemp, fractiontemp = divide(num)

str_len = len(inttemp)

if str_len > 12:

print("數值過大,無法轉換")

return

# 如果大於8位,包含單位億

elif str_len > 8:

rmbstr = quchong(four2hanzi(inttemp[0:-8]))+"億"+quchong(four2hanzi(inttemp[-8:-4]))+"萬"+quchong(four2hanzi(inttemp[-4:]))+"元"

elif str_len > 4:

rmbstr = quchong(four2hanzi(inttemp[0:-4])) + "萬" + quchong(four2hanzi(inttemp[-4:])) + "元"

else:

rmbstr = quchong(four2hanzi(inttemp[-4:])) + "元"

rmbstr += fraction2hanzi(fractiontemp)

# 替換一些常用讀法

rmbstr = rmbstr.replace('零元','元')

rmbstr = rmbstr.replace('零萬','萬')

rmbstr = rmbstr.replace('零億','億')

rmbstr = rmbstr.replace('億萬','億')

rmbstr = rmbstr.replace('壹十','十')

return rmbstr

print(num2rmb())

瘋狂Python講義Unit4 gobang

usr bin python3 命令列五子棋 import random board size 15 board 初始化棋盤 def initboard for i in range board size 畫棋盤 def scripboard for i in range board size fo...

Unit4如何使用類

建立物件,呼叫方法 public class test 屬性有預設值,預設值規則 整數和字元型預設位0,小數預設為0.0,布林型別預設為false,引用型別預設為null 使用預設構造方法建立物件 jvm預設構造方法 public class person 等價於以下 public class pe...

《瘋狂Python講義》之異常處理

異常機制已經成為衡量一門程式語言是否成熟的標準之一,使用異常處理機制的python程式有更好的容錯性,更加健康。python的異常處理機制可以讓程式具有極好的容錯性。使用try except捕獲異常 語法結構如下 try 業務實現 except error1,error2,as e alert 輸入...