社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python程序员的进化

Python网络爬虫与数据挖掘 • 7 年前 • 336 次点击  

来源:https://coolshell.cn/articles/2082.html


以前本站发布过一篇《程序员的进化》,以一种幽默的代码展现方式调侃了程序。下面这篇是关于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(6))

第一年刚学完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)) + '\n')

专家级程序员

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('\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))

学习Python和网络爬虫,关注公众号:datanami


近期文章:

  1. 华住酒店1.23亿条开房记录疑被脱裤,程序员安全意识淡薄

  2. 80、90后的看过来:给你一个快速成为研究生的方法

  3. 最快Web框架快速入门

  4. 10个最好用的Python集成开发环境

  5. 10个Python面试常问的问题



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/lyYKad2Jgv
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/23394