本帖最后由 Gin_Q 于 2020-7-20 10:47 编辑
大家有兴趣可以测测! | | | | | | | | | | | ch_dict = {u'零':0, u'一':1, u'二':2, u'三':3, u'四':4, | | u'五':5, u'六':6, u'七':7, u'八':8, u'九':9,u'十':10, | | u'百':100, u'千':10 ** 3, u'万':10 ** 4,u'〇':0, | | u'壹':1, u'贰':2, u'叁':3, u'肆':4,u'伍':5, | | u'陆':6, u'柒':7, u'捌':8, u'玖':9,u'拾':10, | | u'佰':100, u'仟':10 ** 3, u'萬':10 ** 4,u'亿':10 ** 8, u'億':10 ** 8, | | u'幺': 1,u'两':2} | | | | def converion(temp, unit): | | intr = 0 | | | | temp_len = len(temp) | | if temp_len <= 2 and temp[0] == 10: | | for i in temp: | | intr += i | | return intr * unit | | for i in range(temp_len): | | if temp[i] > 9 and temp[i-1] != 0: | | intr += temp[i] * temp[i-1] | | if temp[-1] < 10: intr += temp[-1] | | return intr * unit | | | | def split_unit(temp, unit): | | nu = [] | | while True: | | if temp[0] != unit: | | nu.append(temp.pop(0)) | | continue | | temp.pop(0) | | return converion(nu, unit) | | | | def onere(strarr): | | intr = 0 | | temp = [ch_dict[i] for i in strarr] | | if 10**8 in temp: | | intr += split_unit(temp, 10**8) | | if 10**4 in temp: | | intr += split_unit(temp, 10**4) | | if temp: | | intr += converion(temp, 1) | | return str(intr) | | | | test_dig = [u'九', | | u'十一', | | u'一百二十三', | | u'一千二百零三', | | u'一万一千一百零一', | | u'十万零三千六百零九', | | u'一百二十三万四千五百六十七', | | u'一千一百二十三万四千五百六十七', | | u'一亿一千一百二十三万四千五百六十七', | | u'一百零二亿五千零一万零一千零三十八', | | u'一千一百一十一亿一千一百二十三万四千五百六十七', | | ] | | | | for i in test_dig: | | print(i,'\n',onere(i))COPY |
| 九 | | 9 | | 十一 | | 11 | | 一百二十三 | | 123 | | 一千二百零三 | | 1203 | | 一万一千一百零一 | | 11101 | | 十万零三千六百零九 | | 103609 | | 一百二十三万四千五百六十七 | | 1234567 | | 一千一百二十三万四千五百六十七 | | 11234567 | | 一亿一千一百二十三万四千五百六十七 | | 111234567 | | 一百零二亿五千零一万零一千零三十八 | | 10250011038 | | 一千一百一十一亿一千一百二十三万四千五百六十七 | | 111111234567 | | | | 请按任意键继续. . .COPY |
|