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 © 2025
京ICP备05028076号