Differences between revisions 1 and 3 (spanning 2 versions)
Revision 1 as of 2005-08-11 09:05:41
Size: 1498
Editor: hoxide
Comment:
Revision 3 as of 2009-12-25 07:08:56
Size: 1646
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
 源于qq上Jaina(16009966)的提问. 花了一个晚上实现了一下,  源于qq上Jaina(16009966)的提问. 花了一个晚上实现了一下, 基本想法是4位为一个断, 用conv4转换, 然后再用conv组合之.

 程序在Windows2003, python2.4下调试通过. 注意编码问题.
  • 源于qq上Jaina(16009966)的提问. 花了一个晚上实现了一下, 基本想法是4位为一个断, 用conv4转换, 然后再用conv组合之. 程序在Windows2003, python2.4下调试通过. 注意编码问题.

   1 # coding:utf-8
   2 
   3 UUNIT=[u'', u'' , u'' , u'']
   4 BUINT = [u'', u'', u'亿', u'万亿' , u'亿亿']
   5 NUM=[u'',u'',u'', u'', u'', u'' , u'', u'', u'', u''] 
   6 
   7 def conv4(num, flag=False):
   8    ret = u''
   9    s = str(num)
  10    l = len(s)
  11    assert(len(s) <= 4)
  12    if flag and len(s)<4:
  13       ret = ret + NUM[0]
  14    for i in xrange(l):
  15       if s[i] != '0':
  16          ret = ret + NUM[int(s[i])]+UUNIT[l-i-1]
  17       elif s[i-1] != '0':
  18          ret = ret + NUM[0]
  19    return ret
  20 
  21 def conv(num):
  22    ss = str(num)
  23    l = len(ss)
  24    j = l / 4
  25    jj = l % 4
  26    lss = [ss[0:jj] for i in [1] if ss[0:jj]] \
  27        + [ss[i*4+jj:(i+1)*4+jj] for i in xrange(j) if ss[i*4+jj:(i+1)*4+jj] ]
  28    print lss
  29    ul = len(lss)
  30    ret = u''
  31    zflag = False
  32    for i in xrange(ul):
  33       bu = BUINT[ul-i-1]
  34       tret = conv4(int(lss[i]), flag = i)
  35       if tret[-1:] == NUM[0]:
  36          tret = tret[:-1]
  37       if tret:
  38          print zflag , (tret+bu).encode('mbcs')
  39          if zflag and tret[0] != NUM[0] :
  40             ret = ret + NUM[0] +tret+bu
  41          else:
  42             ret = ret + tret+bu
  43          zflag = False
  44       else:
  45          zflag = True
  46    return ret
  47 
  48 if __name__ == '__main__':
  49    #print conv(11111)
  50    print conv(103056).encode('mbcs')
  51    print conv(101000).encode('mbcs')
  52    print conv(1200999100000000010).encode('mbcs')
  53    

num2c.py (last edited 2009-12-25 07:08:56 by localhost)