65 lines
1.2 KiB
Python
65 lines
1.2 KiB
Python
C = {
|
|
"-": "负",
|
|
".": "点",
|
|
0: "零",
|
|
1: "一",
|
|
2: "二",
|
|
3: "三",
|
|
4: "四",
|
|
5: "五",
|
|
6: "六",
|
|
7: "七",
|
|
8: "八",
|
|
9: "九",
|
|
10: "十",
|
|
100: "百",
|
|
1000: "千",
|
|
10000: "万",
|
|
11: "十一",
|
|
12: "十二",
|
|
13: "十三",
|
|
14: "十四",
|
|
15: "十五",
|
|
16: "十六",
|
|
17: "十七",
|
|
18: "十八",
|
|
19: "十九",
|
|
}
|
|
|
|
D = {2: 10, 3: 100, 4: 1000, 5: 10000}
|
|
|
|
|
|
def to_chinese_numeral(n):
|
|
# Check if n in C dictonary
|
|
try:
|
|
return C[n]
|
|
except KeyError:
|
|
pass
|
|
|
|
# Check if negative
|
|
if n < 0:
|
|
n = abs(n)
|
|
is_negative = True
|
|
else:
|
|
is_negative = False
|
|
|
|
# Put single digits in list
|
|
split_number = [int(x) for x in str(n)]
|
|
|
|
arranged_number = []
|
|
for _ in range(0, len(split_number)):
|
|
arranged_number.append(split_number[0])
|
|
if len(split_number) in D:
|
|
arranged_number.append(D[len(split_number)])
|
|
split_number.pop(0)
|
|
if arranged_number[-1] == 0:
|
|
arranged_number.pop(-1)
|
|
|
|
if is_negative:
|
|
arranged_number.append("-")
|
|
|
|
return arranged_number
|
|
|
|
|
|
print(to_chinese_numeral(-90909)) # 9 10000 9
|