字节跳动python面试题_字节跳动面试题.汉字转阿拉伯数字「Python」

#!/usr/bin/python

# -*- coding: UTF-8 -*-

num_map = {

'一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9,

'十': 10, '百': 100, '千': 1000, '万': 10000, '亿': 100000000,

}

def sectionChinese(str):

res = 0

sectionNum = 0

for i in range(len(str)):

v = num_map.get(str[i])

if v<=9 and v>=0:

sectionNum = v

if i == len(str) - 1:

res=res+sectionNum

elif v == 10 or v==100 or v==1000:

# 处理"十"开头的

if i == 0:

sectionNum = 1

sectionNum = sectionNum * v

res = res+sectionNum

return res

def ChineseToNumber(string):

if "零" in string:

string = string.replace("零","")

flag = False

k = 0

str1 = ''

str2 = ''

str3 = ''

for i in range(len(string)):

if string[i] == "亿":

k = i+1

str1 = string[0:i]

flag = True

if "万" not in string and i+1 < len(string):

str3 = string[i+1:]

elif string[i] == "万":

str2 = string[k:i]

if i+1 < len(string):

str3 = string[i+1:]

flag = True

if not flag:

str3 = string

result = sectionChinese(str1)*100000000+sectionChinese(str2)*10000+sectionChinese(str3)

return result

String= ["三","六","八","二十","八十","一百","三百","一千","一万","十万","三十万","二十万","三百万",

"一亿","十亿","二十亿","四百亿","四千亿","二十三","四十五","三十六","三百二十","六百三十",

"八百九十","三千六百二十","五千七百三十","一万二千二百三十六","十万八千六百三十四","二十万三千",

"二十万零三千","一百万零八千零六十","七百万零五十六","四百万","一千万零八百六十四","八千万零九百八十二",

"一亿零八十","一亿八千六百三十二万三千六百五十二","十亿六千零五十四万三千","九亿零八百六十二","三百亿",

"三百亿零四百八十万三千六百二十","三百亿零三十","三百亿三千万","三百亿零三万"]

for string in String:

print (string+"--->"+str(ChineseToNumber(string)))

"""

输出:

三--->3

六--->6

八--->8

二十--->20

八十--->80

一百--->100

三百--->300

一千--->1000

一万--->10000

十万--->100000

三十万--->300000

二十万--->200000

三百万--->3000000

一亿--->100000000

十亿--->1000000000

二十亿--->2000000000

四百亿--->40000000000

四千亿--->400000000000

二十三--->23

四十五--->45

三十六--->36

三百二十--->320

六百三十--->630

八百九十--->890

三千六百二十--->3620

五千七百三十--->5730

一万二千二百三十六--->12236

十万八千六百三十四--->108634

二十万三千--->203000

二十万零三千--->203000

一百万零八千零六十--->1008060

七百万零五十六--->7000056

四百万--->4000000

一千万零八百六十四--->10000864

八千万零九百八十二--->80000982

一亿零八十--->100000080

一亿八千六百三十二万三千六百五十二--->186323652

十亿六千零五十四万三千--->1060543000

九亿零八百六十二--->900000862

三百亿--->30000000000

三百亿零四百八十万三千六百二十--->30004803620

三百亿零三十--->30000000030

三百亿三千万--->30030000000

三百亿零三万--->30000030000

"""

思路:

参考:https://blog.csdn.net/a897180673/article/details/79364584

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值