整数の漢数字表記

30分プログラム、その107。整数の漢数字表記
無性にPythonが使いたくなったので、Pythonで。

使い方

$ jpnum 100
百

$ jpnum 1401
千四百一

ソースコード

どことなく、コインの両替と似ている。あれよりも、特殊な条件が多いけれど。

あ、両替関数と文字列化関数を分ければよかった。

#! /usr/bin/python
# -*- mode:python; coding:utf-8 -*-
#
# jpnum.py -
#
# Copyright(C) 2007 by mzp
# Author: MIZUNO Hiroki <hiroki1124@gmail.com> 
# http://mzp.sakura.ne.jp/
#
# Timestamp: 2007/08/14 07:25:39
#
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Python itself.
#
import sys

def jpnum_sub(n):
    return ('一','二','三','四','五','六','七','八','九')[n-1]

def jpnum(n,units):
    if len(units) == 1:
	return jpnum_sub(n)
    else:
	(size,name) = units[0]
	rest = jpnum(n % size,units[1:])
	count = n / size

	if count == 0:
	    return rest
	elif count == 1:
	    return '%s%s' % (name,rest)
	else:
	    return "%s%s%s" % (jpnum_sub(count),name,rest)


if __name__ == '__main__':
    Units = [(1000,'千'),(100,'百'),(10,'十'),(1,'')]
    print jpnum(int(sys.argv[1]),Units)