搞笑的程序猿:看看你是哪种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 相关文章推荐
Python基本数据类型详细介绍
Mar 11 Python
Python导入oracle数据的方法
Jul 10 Python
python利用正则表达式提取字符串
Dec 08 Python
浅谈python下tiff图像的读取和保存方法
Dec 04 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
Django静态文件加载失败解决方案
Aug 26 Python
python wsgiref源码解析
Feb 06 Python
Python3中最常用的5种线程锁实例总结
Jul 07 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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python 字符串split的用法分享
2013/03/23 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
python爬取指定微信公众号文章
2018/12/20 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python3并发写文件与Python对比
2019/11/20 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
关于Keras Dense层整理
2020/05/21 Python
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
实习护士自我鉴定
2013/10/13 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
求职信需要的五点内容
2014/02/01 职场文书
我的祖国演讲稿
2014/05/04 职场文书
考试后的感想
2015/08/07 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
浅谈Python响应式类库RxPy
2021/06/14 Python
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
MySQL创建管理LIST分区
2022/04/13 MySQL