搞笑的程序猿:看看你是哪种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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
python抽象基类用法实例分析
Jun 04 Python
Django自定义分页效果
Jun 27 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
Python打印“菱形”星号代码方法
Feb 05 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
python Django里CSRF 对应策略详解
Aug 05 Python
对python中UDP,socket的使用详解
Aug 22 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
python+opencv实现目标跟踪过程
Jun 21 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和ACCESS写聊天室(一)
2006/10/09 PHP
php 函数中使用static的说明
2012/06/01 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
php实现简单的上传进度条
2015/11/17 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
django富文本编辑器的实现示例
2019/04/10 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python支持多线程的爬虫实例
2019/12/21 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
Django-imagekit的使用详解
2020/07/06 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
文明礼仪演讲稿
2014/05/12 职场文书
计算机网络专业求职信
2014/06/05 职场文书
精神文明建设标语
2014/06/16 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js