趣文:Python程序員的進化史
導讀:下面代碼來自 fmeyer ,列舉了各種程序員所寫的階乘算法代碼,甚至包括網頁設計師的。
#新手程序員
def factorial (x):
if x == 0:
return 1
else:
return x * factorial (x - 1)
print factorial (6)
#有一年 Pascal 經驗的程序員
def factorial (x):
result = 1
i = 2
while i <= x:
result = result * i
i = i + 1
return result
print factorial (6)
#有一年 C 經驗的程序員
def fact (x): #{
result = i = 1;
while (i <= x): #{
result *= i;
i += 1;
#}
return result;
#}
print(fact (6))
#有一年 SICP 經驗的程序員
@tailcall
def fact (x, acc=1):
if (x > 1): return (fact ((x - 1), (acc * x)))
else: return acc
print(fact (6))
#有一年 Python 經驗的程序員
def Factorial (x):
res = 1
for i in xrange (2, x + 1):
res *= i
return res
print Factorial (6)
#懶惰的 Python 程序員
def fact (x):
return x > 1 and x * fact (x - 1) or 1
print fact (6)
#更懶惰的 Python 程序員
f = lambda x: x and x * f (x - 1) or 1
print f (6)
#專家級 Python 程序員
import operator as op
import functional as f
fact = lambda x: f.foldl (op.mul, 1, xrange (2, x + 1))
print fact (6)
#Python 黑客
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')
#專家級程序員
import c_math
fact = c_math.fact
print fact (6)
#英國專家級程序員 (譯注:在英式英語中,“數學”的簡寫,多用“maths”,不是“math"。)
import c_maths
fact = c_maths.fact
print fact (6)
#網頁設計師
def factorial (x):
#-------------------------------------------------
#--- 這段代碼是從 Math Vault 那弄過來滴---
#--- 計算階乘 (C)亞瑟·史密斯 1999 年---
#-------------------------------------------------
result = str (1)
i = 1 #謝謝亞當
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 程序員
import os
def fact (x):
os.system ('factorial ' + str (x))
fact (6)
#Windows 程序員
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, NULL, NULL, NULL, NULL, NULL)
#企業程序員
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))
下面代碼是 kohashi 給出的,他說是在郵局看到的。
#VBA 程序員 def factorial (x): if x == 0: return 1 if x == 1: return x if x == 2: return x * (x-1) if x == 3: return x * (x-1) * (x-2) if x == 4: return x * (x-1) * (x-2) * (x-3) if x == 5: return x * (x-1) * (x-2) * (x-3) * (x-4) if x == 6: return x * (x-1) * (x-2) * (x-3) * (x-4) * (x-5) print factorial (6)
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!