#!/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 輸入...