相关栏目: 移动开发 当前位置:主页 > 移动开发 >

趣文:Python程序员的进化史

发布时间:2018-09-04 作者:admin 分类:移动开发

本文由 伯乐在线 - 黄利民 翻译。未经许可,禁止转载!
英文出处:fmeyer。欢迎加入翻译组。

导读:下面代码来自 fmeyer ,列举了各种程序员所写的阶乘算法代码,甚至包括网页设计师的。 :)

Python
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 ; html-script: false ]#新手程序员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 resultprint factorial(6) #有一年 C 经验的程序员def fact(x): #{    result = i = 1;    while (i <= x): #{        result *= i;        i += 1;    #}    return result;#}print(fact(6)) #有一年 SICP 经验的程序员@tailcalldef fact(x, acc=1):    if (x > 1): return (fact((x - 1), (acc * x)))    else: return accprint(fact(6)) #有一年 Python 经验的程序员def Factorial(x):    res = 1    for i in xrange(2, x + 1):        res *= i    return resprint Factorial(6) #懒惰的Python程序员def fact(x):    return x > 1 and x * fact(x - 1) or 1print fact(6) #更懒惰的Python程序员f = lambda x: x and x * f(x - 1) or 1print f(6) #专家级Python程序员import operator as opimport functional as ffact = lambda x: f.foldl(op.mul, 1, xrange(2, x + 1))print fact(6) #Python 黑客import sys@tailcalldef fact(x, acc=1):    if x: return fact(x.__sub__(1), acc.__mul__(x))    return accsys.stdout.write(str(fact(6)) + ' ') #专家级程序员import c_mathfact = c_math.factprint fact(6) #英国专家级程序员 (译注:在英式英语中,“数学”的简写,多用“maths”,不是“math"。)import c_mathsfact = c_maths.factprint 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 resultprint factorial(6) #Unix 程序员import osdef fact(x):    os.system('factorial ' + str(x))fact(6) #Windows 程序员NULL = Nonedef 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(' ')    return 1import sysCalculateAndPrintFactorialEx(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给出的,他说是在邮局看到的。

1234567891011121314151617 #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)

 

打赏支持我翻译更多好文章,谢谢!

打赏译者
打赏支持我翻译更多好文章,谢谢!

任选一种支付方式

本文源自: 凯发国际

上一篇:Fragment Transactions和Activity状态丢失 下一篇:js FLASH幻灯片字符串中有连接符&的处理方法

Copyright © 2005-2016 http://www.owlpma.com 凯发国际_凯发国际开户礼金_凯发注册送_新浪娱乐版权所有 凯发国际_凯发国际开户礼金_凯发注册送_新浪娱乐