搞笑的程序猿:看看你是哪种Python程序员


Posted in Python onJune 12, 2015

不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的Python程序员编出的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:  
    resultresult = result * i  
    ii = 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专家

fact = lambda x: reduce(int.__mul__, xrange(2, x + 1), 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') //一般人压根看不懂。

专家级程序员

from c_math import fact  
print fact(6)

大英帝国程序员

from c_maths import 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) //可能自己都晕菜了...

企业级程序员

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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
python获取网页状态码示例
Mar 30 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
简单的Python调度器Schedule详解
Aug 30 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
python使用opencv在Windows下调用摄像头实现解析
Nov 26 Python
python 实现简单的FTP程序
Dec 27 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
Python 如何实现数据库表结构同步
Sep 29 Python
pytorch实现线性回归以及多元回归
Apr 11 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
Python 3.x 新特性及10大变化
Jun 12 #Python
Python实现比较两个列表(list)范围
Jun 12 #Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 #Python
Python语言实现机器学习的K-近邻算法
Jun 11 #Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 #Python
python中的代码编码格式转换问题
Jun 10 #Python
python实现数独算法实例
Jun 09 #Python
You might like
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
PHP 验证登陆类分享
2015/03/13 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
jquery中动态效果小结
2010/12/16 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
外企财务年会演讲稿
2014/01/03 职场文书
新闻报道策划方案
2014/06/11 职场文书
2014年路政工作总结
2014/12/10 职场文书
民事调解书范文
2015/05/20 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android