ppe2/src/codewars/kata_chinese_numeral_encoder.py

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