把一个用阿拉伯数字表示的正整数转换成汉字大写表示

一道面试题目,要求将正整数以阿拉伯数字形式转换为汉字大写。虽然代码未处理非法输入,但在面试中应讨论各种边界情况,如负数、小数、非数字输入等。例如,数字1201001应转换为'壹佰贰拾万壹仟零壹',而1200000则转换为'壹佰贰拾万'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个面试题,考查面试者的逻辑思维能力,考虑的问题很多,把一个用阿拉伯数字表示的正整数转换成汉字大写表示

这里代码没有考虑非法输入,但如果是面试。最好跟面试官交流清楚,展现你考虑问题全面,写出的代码鲁棒性强

比如:输入的数带符号,输入的数不是整数,是小数,是负数,或者压根就不是数值,或者是空值等等

主要功能为:比如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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值