搞笑的程序猿:看看你是哪种Python程序员
不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的Python程序员编出的Python代码,显示出了不同的风格,代码都很简单,有趣。下面让我们一起来看看一个Python程序猿进阶的全过程吧。(偷笑)
编程新手
deffactorial(x): ifx==0: return1 else: returnx*factorial(x-1)//不简单啊,迭代,新手哦。 printfactorial(6)
一年编程经验(学Pascal的)
deffactorial(x): result=1 i=2 whilei<=x: resultresult=result*i ii=i+1 returnresult printfactorial(6)
一年编程经验(学C的)
deffact(x):#{ result=i=1; while(i<=x):#{ result*=i; i+=1; #} returnresult; #} print(fact(6))
一年编程经验(读过SICP)
@tailcall deffact(x,acc=1): if(x>1): return(fact((x-1),(acc*x))) else: returnacc print(fact(6))
一年编程经验(Python)
defFactorial(x): res=1 foriinxrange(2,x+1): res*=i returnres printFactorial(6)
懒惰的Python程序员
deffact(x): returnx>1andx*fact(x-1)or1 printfact(6)
更懒的Python程序员
f=lambdax:xandx*f(x-1)or1//匿名函数,厉害。程序猿真是懒人做的! printf(6)
Python专家
fact=lambdax:reduce(int.__mul__,xrange(2,x+1),1) printfact(6)//专家厉害啊。
Python黑客
importsys @tailcall deffact(x,acc=1): ifx:returnfact(x.__sub__(1),acc.__mul__(x)) returnacc sys.stdout.write(str(fact(6))+'\n')//一般人压根看不懂。
专家级程序员
fromc_mathimportfact printfact(6)
大英帝国程序员
fromc_mathsimportfact printfact(6) Web设计人员 deffactorial(x): #------------------------------------------------- #---CodesnippetfromTheMathVault--- #---Calculatefactorial(C)ArthurSmith1999--- #------------------------------------------------- result=str(1) i=1#ThanksAdam whilei<=x: #result=result*i#It'sfastertouse*= #result=str(result*result+i) #result=int(result*=i)#?????? result=str(int(result)*i) #result=int(str(result)*i) i=i+1 returnresult printfactorial(6)
Unix程序员
importos deffact(x): os.system('factorial'+str(x)) fact(6)
Windows程序员
NULL=None defCalculateAndPrintFactorialEx(dwNumber, hOutputDevice, lpLparam, lpWparam, lpsscSecurity, *dwReserved): iflpsscSecurity!=NULL: returnNULL#Notimplemented dwResult=dwCounter=1 whiledwCounter<=dwNumber: dwResult*=dwCounter dwCounter+=1 hOutputDevice.write(str(dwResult)) hOutputDevice.write('\n') return1 importsys CalculateAndPrintFactorialEx(6,sys.stdout,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)//可能自己都晕菜了...
企业级程序员
defnew(cls,*args,**kwargs): returncls(*args,**kwargs) classNumber(object): pass classIntegralNumber(int,Number): deftoInt(self): returnnew(int,self) classInternalBase(object): def__init__(self,base): self.base=base.toInt() defgetBase(self): returnnew(IntegralNumber,self.base) classMathematicsSystem(object): def__init__(self,ibase): Abstract @classmethod defgetInstance(cls,ibase): try: cls.__instance exceptAttributeError: cls.__instance=new(cls,ibase) returncls.__instance classStandardMathematicsSystem(MathematicsSystem): def__init__(self,ibase): ifibase.getBase()!=new(IntegralNumber,2): raiseNotImplementedError self.base=ibase.getBase() defcalculateFactorial(self,target): result=new(IntegralNumber,1) i=new(IntegralNumber,2) whilei<=target: result=result*i i=i+new(IntegralNumber,1) returnresult printStandardMathematicsSystem.getInstance(new(InternalBase, new(IntegralNumber,2))).calculateFactorial(new(IntegralNumber,6))//面向对象,但就此题来说,又长又臭。