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