用Python3實現的一個數字轉漢字大寫金額原始碼
阿新 • • 發佈:2019-02-18
#! /bin/python # -*- coding:utf-8 -*- from decimal import Decimal from decimal import getcontext num_to_ch_dic = { 0:'零', '.':'點', 1:'壹', 2:'貳', 3:'叄', 4:'肆',5:'伍',6:'陸',7:'柒',8:'捌',9:'玖', 10:'z'} li_dw = [ '萬','億','萬'] character_num = ['壹', '貳', '叄', '肆','伍','陸','柒','捌','玖'] li_dot = [ '分','角'] li_mod = list("拾佰仟") if __name__ == '__main__': str_num = input("Please Input a num: ") #str_num = "1000000001000001" final_str = '' detail_dw = list("分角圓拾佰仟") for i in li_dw : detail_dw.append(i) for j in li_mod : detail_dw.append(j) detail_dw.reverse() print(detail_dw) max_len = len(detail_dw) li_num = list(str(int(Decimal(str_num) * 100)).rjust(max_len, '0')) print(li_num) li_dw.append('圓') index_tmp = 0 while index_tmp < max_len : if detail_dw[index_tmp] in li_dw : if li_num[index_tmp] == '0': li_num[index_tmp] = '10' li_num[index_tmp] = num_to_ch_dic[int(li_num[index_tmp])] index_tmp = index_tmp + 1 print(li_num) li_num_str = ''.join(li_num) print(li_num_str) li_num_str = li_num_str.replace('零零零z','---z') li_num_str = li_num_str.replace('零零z', '--z') li_num_str = li_num_str.replace('z零零', 'z--') li_num_str = li_num_str.replace('z零', 'z-') li_num_str = li_num_str.replace('零z', '-z') print(li_num_str) li_num = list(li_num_str) index_tmp = 0 start_sign = 0 while index_tmp < max_len: if start_sign == 0: if li_num[index_tmp] in character_num: start_sign = 1 final_str = li_num[index_tmp] + detail_dw[index_tmp] elif start_sign == 1: if li_num[index_tmp] == 'z': final_str = final_str + detail_dw[index_tmp] + '零' elif li_num[index_tmp] == '-': final_str = final_str + '' elif li_num[index_tmp] == '零': final_str = final_str + '零' else: final_str = final_str + li_num[index_tmp] + detail_dw[index_tmp] index_tmp = index_tmp + 1 if start_sign == 0: final_str = '零圓零分整' else: print(final_str) final_str = final_str .replace('零零', '零') final_str = final_str.replace('億萬', '億零') final_str = final_str + '整' final_str = final_str .replace('圓零整', '圓整') final_str = final_str .replace('角零整', '角整') final_str = final_str .replace('零零', '零') print(final_str)