2011年02月09日 星期三 11:21
不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的程序员编出的Phthon代码显示出了不同的风格,代码都很简单,有趣。这篇文章的原始出处在 这里 ,我把它整理了一下,并修改了几处错误。
1 2 3 4 5 6 |
def factorial ( x ) : if x == 0 : return 1 else : return x * factorial ( x - 1 ) print factorial ( 6 ) |
1 2 3 4 5 6 7 8 |
def factorial ( x ) : result = 1 i = 2 while i < = x: result = result * i i = i + 1 return result print factorial ( 6 ) |
1 2 3 4 5 6 7 8 9 |
def fact ( x ) : #{ result = i = 1 ; while ( i < = x ) : #{ result * = i ; i += 1 ; #} return result ; #} print ( fact ( 6 ) ) |
1 2 3 4 5 |
@tailcall def fact ( x, acc= 1 ) : if ( x > 1 ) : return ( fact ( ( x - 1 ) , ( acc * x ) ) ) else : return acc print ( fact ( 6 ) ) |
1 2 3 4 5 6 |
def Factorial ( x ) : res = 1 for i in xrange ( 2 , x + 1 ) : res * = i return res print Factorial ( 6 ) |
1 2 3 |
def fact ( x ) : return x > 1 and x * fact ( x - 1 ) or 1 print fact ( 6 ) |
1 2 |
f = lambda x: x and x * f ( x - 1 ) or 1 print f ( 6 ) |
2011年02月09日 星期三 11:24
1 2 |
fact = lambda x: reduce ( int . __mul__ , xrange ( 2 , x + 1 ) , 1 ) print fact ( 6 ) |
1 2 3 4 5 6 |
import sys @tailcall def fact ( x, acc= 1 ) : if x: return fact ( x. __sub__ ( 1 ) , acc. __mul__ ( x ) ) return acc sys . stdout . write ( str ( fact ( 6 ) ) + ' \n ' ) |
1 2 |
from c_math import fact print fact ( 6 ) |
1 2 |
from c_maths import fact print fact ( 6 ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def factorial ( x ) : #------------------------------------------------- #--- Code snippet from The Math Vault --- #--- Calculate factorial (C) Arthur Smith 1999 --- #------------------------------------------------- result = str ( 1 ) i = 1 #Thanks Adam while i < = x: #result = result * i #It's faster to use *= #result = str(result * result + i) #result = int(result *= i) #?????? result = str ( int ( result ) * i ) #result = int(str(result) * i) i = i + 1 return result print factorial ( 6 ) |
1 2 3 4 |
import os def fact ( x ) : os . system ( 'factorial ' + str ( x ) ) fact ( 6 ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
NULL = None def CalculateAndPrintFactorialEx ( dwNumber, hOutputDevice, lpLparam, lpWparam, lpsscSecurity, * dwReserved ) : if lpsscSecurity ! = NULL: return NULL #Not implemented dwResult = dwCounter = 1 while dwCounter < = dwNumber: dwResult * = dwCounter dwCounter += 1 hOutputDevice. write ( str ( dwResult ) ) hOutputDevice. write ( ' \n ' ) return 1 import sys CalculateAndPrintFactorialEx ( 6 , sys . stdout , NULL, NULL, NULL, |
2011年02月09日 星期三 11:25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
def new ( cls, * args, ** kwargs ) : return cls ( * args, ** kwargs ) class Number ( object ) : pass class IntegralNumber ( int , Number ) : def toInt ( self ) : return new ( int , self ) class InternalBase ( object ) : def __init__ ( self , base ) : self . base = base. toInt ( ) def getBase ( self ) : return new ( IntegralNumber, self . base ) class MathematicsSystem ( object ) : def __init__ ( self , ibase ) : Abstract @ classmethod def getInstance ( cls, ibase ) : try : cls.__instance except AttributeError : cls.__instance = new ( cls, ibase ) return cls.__instance class StandardMathematicsSystem ( MathematicsSystem ) : def __init__ ( self , ibase ) : if ibase. getBase ( ) ! = new ( IntegralNumber, 2 ) : raise NotImplementedError self . base = ibase. getBase ( ) def calculateFactorial ( self , target ) : result = new ( IntegralNumber, 1 ) i = new ( IntegralNumber, 2 ) while i < = target: result = result * i i = i + new ( IntegralNumber, 1 ) return result print StandardMathematicsSystem. getInstance ( new ( InternalBase, new ( IntegralNumber, 2 ) ) ) . calculateFactorial ( new ( IntegralNumber, 6 ) ) |
2011年02月09日 星期三 21:17
牛B
2011年02月17日 星期四 15:49
哇,这个说明一个道理,企业级程序员的代码好长
2011年04月12日 星期二 16:02
= =我想说…………我的ubuntu 11.04的FF4显示代码有问题………………
Zeuux © 2025
京ICP备05028076号