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
Python 专家
1
2
fact =
lambda
x:
reduce
(
int
.
__mul__
,
xrange
(
2
, x +
1
)
,
1
)
print
fact
(
6
)
Python 黑客
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
)
Web 设计人员
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
)
Unix 程序员
1
2
3
4
import
os
def
fact
(
x
)
:
os
.
system
(
'factorial '
+
str
(
x
)
)
fact
(
6
)
Windows 程序员
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,
NULL, NULL, NULL, NULL, NULL, 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 © 2024
京ICP备05028076号