位元組跳動面試題 漢字轉阿拉伯數字 Python

2021-10-01 17:48:02 字數 2806 閱讀 7990

#!/usr/bin/python

# -*- coding: utf-8 -*-

num_map =

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

"""

思路:

參考:

面試 阿拉伯數字金額轉漢字

要求將阿拉伯數字轉為漢字顯示出來 包含單位 幾個小的注意點 1 中文字元佔兩個位元組,所以如果用c語言實現,需要用char陣列的形式儲存單個漢字。2 如果數字 現連續的零,需要把它替換為單一的零。3 在億 萬 元的前面乙個漢字不可以為零 人民幣讀取方式決定 4 double數值可分為整數部分和小數部...

阿拉伯數字轉成漢字

做乙個中醫專案時後台返回是阿拉伯數字,專案需求是需要轉化為中文數字,記錄一下轉化方法,感覺要比那種switch.case.拓展性好一點。因為當時不會超過一千,所以就寫到了百位,其他需求可以自行更改一下。當然預設傳的是整數型別的。public class numbertochineseutil str...

阿拉伯數字轉漢字數字 C

using system using system.collections.generic using system.text public class numtocharactor private string unit new string public numtocharactor publi...