趣文: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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!