アラビア数字で表される正の整数を漢字の大文字に変換する
1733 ワード
一つの面接問題は、面接者の論理的思考能力を調べ、考慮する問題が多く、アラビア数字で表される正の整数を漢字の大文字に変換する.
ここのコードは不正入力を考慮していませんが、面接であれば.面接官とよく交流して、あなたの考えが全面的で、書くコードのロバスト性が強いことを示したほうがいいです.
たとえば、入力された数には記号が付いています.入力された数は整数ではありません.小数で、負数です.あるいは、圧根が数値ではありません.あるいは空の値などです.
主な機能は:例えば1201001変換:壹佰贰拾万壹仟零壹
1200000変換:壹佰贰拾万
次のコードは次のとおりです.
ここのコードは不正入力を考慮していませんが、面接であれば.面接官とよく交流して、あなたの考えが全面的で、書くコードのロバスト性が強いことを示したほうがいいです.
たとえば、入力された数には記号が付いています.入力された数は整数ではありません.小数で、負数です.あるいは、圧根が数値ではありません.あるいは空の値などです.
主な機能は:例えば1201001変換:壹佰贰拾万壹仟零壹
1200000変換:壹佰贰拾万
次のコードは次のとおりです.
# : 4 4
# :
# : list
def NumberToChinese(data):
Adict = {1:u'', 2:u' ', 3:u' ', 4:' '}
cdata = '%d' %data
length = len(cdata)
result = u''
numberOfSplit = SplitNumber(cdata)
lenOfSplit = len(numberOfSplit)
for i in range(lenOfSplit):
result = result + ToChinese(numberOfSplit[i]) + Adict[lenOfSplit - i]
return result
def SplitNumber(cdata):
length = len(cdata)
g = length % 4
csdata = []
if g > 0:
csdata.append(cdata[:g])
k = g
while k < length:
csdata.append(cdata[k:k+4])
k = k + 4
return csdata
def ToChinese(cdata):
length = len(cdata)
lk = length
result = u''
Bdict = {0:u' ', 1:u' ', 2:u' ', 3:u' ', 4:u' ', 5:u' ', 6:u' ', 7:u' ', 8:u' ', 9:u' '}
Cdict = {1:u'', 2:u' ', 3:u' ', 4:u' '}
for i in range(length):
# , , if
# , 0, 0, 0, ,
# 0
if int(cdata[i]) == 0:
if i == length - 1 or (i < length -1 and int(cdata[i+1]) == 0):
result = result
else:
result = result + Bdict[int(cdata[i])]
else:
result = result + Bdict[int(cdata[i])] + Cdict[lk]
lk = lk - 1
return result
data = 1201001
print NumberToChinese(data)