zoukankan      html  css  js  c++  java
  • python笔记之编程风格大比拼

    python笔记之编程风格大比拼

        虽然我的python age并不高,但我仍然愿意将我遇到的或者我写的有趣的python程序和大家一块分享,下面是我找到的一篇关于各类python程序员的编程风格的比较文章,以阶乘为例,很有意思。
    

    新手程序员

    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(
    

    第一年刚学完Python的新手

    def Factorial(x):
        res = 1
        for i in xrange(2, x + 1):
            res *= i
        return res
    print Factorial(6)
    

    爱偷懒的程序员

    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)) + '
    ')
    

    专家级程序员

    import c_math
    fact = c_math.fact
    print fact(6)
    

    英语系的专家级程序员

    import c_maths
    fact = c_maths.fact
    print fact(6)
    

    Web 设计者

    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 程序员

    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('
    ')
        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))
    
  • 相关阅读:
    把影响集中到一个点
    How to avoid Over-fitting using Regularization?
    适定性问题
    Numerical Differentiation 数值微分
    What Every Computer Scientist Should Know About Floating-Point Arithmetic
    Generally a good method to avoid this is to randomly shuffle the data prior to each epoch of training.
    What is the difference between iterations and epochs in Convolution neural networks?
    Every norm is a convex function
    Moore-Penrose Matrix Inverse 摩尔-彭若斯广义逆 埃尔米特矩阵 Hermitian matrix
    perl 类里的函数调用其他类的函数
  • 原文地址:https://www.cnblogs.com/bergus/p/4811358.html
Copyright © 2011-2022 走看看