专栏首页量化投资与机器学习看看你是哪种级别的Python程序员(已跪)

看看你是哪种级别的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)  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))
 面向对象,但就此题来说,又长又臭。

本文分享自微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX),作者:编辑部

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 超火动态排序图:代码不到40行,手把手教你!

    具体来说,这种图可以叫:Bar Chart Race,有什么国家GDP的、某某沉浮史等等,为了符合公众号的身份属性,我们为大家制作了这个较为简单的可视化视频:2...

    量化投资与机器学习微信公众号
  • 高效灵活的概率建模方法基于Python

    前言 在今天给大家介绍一个研究工具:pomegranate。它比其他软件包更加灵活,更快,直观易用,并且可以在多线程中并行完成。 The API 主要模型介绍 ...

    量化投资与机器学习微信公众号
  • 千帆过尽,独具只眼 | 从1K+顶级Github机器学习项目中发现的秘密

    在Github上搜索关键字“机器学习”时,我们发现了246632个机器学习代码仓库。由于这些是机器学习中的TOP代码仓库,我们希望这些存代码仓库的所有者和贡献者...

    量化投资与机器学习微信公众号
  • 程序员的进化

    程序员的进化   不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的程序员编出的Python代码显示出了不同的风格,代码都很简单,有趣。我...

    用户1289394
  • Python中的栈溢出及解决办法

    1.递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ....

    用户1214487
  • 加州大学提出:实时实例分割算法YOLACT,可达33 FPS/30mAP!现已开源!

    本文要介绍一篇很棒的实时实例分割论文:YOLACT,该论文是由 加利福尼亚大学 提出。截止2019年4月16日,据Amusi所了解,上述MS R-CNN应该是实...

    Amusi
  • 从MySQL的ibtmp1文件太大说起

    测试环境机器磁盘空间不足的告警打破了下午的沉寂,一群人开始忙活着删数据。但是,不久前刚清理了一波数据,测试环境在没做压测的情况下不至于短短一个月不到就涨了200...

    July
  • 2018年一线互联网公司Java高级面试题总结JVM分布式专题架构福利

    美的让人心动
  • 2018“金三”之一线互联网公司Java高级面试题总结

    3、知道字节码吗?字节码都有哪些?Integer x =5,int y =5,比较x =y 都经过哪些步骤?

    技术zhai
  • 2018年一线互联网公司Java高级面试题总结

    3、hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢?

    java架构师

扫码关注云+社区

领取腾讯云代金券