看看你是哪种级别的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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AhDung

【手记】小心在where中使用NEWID()的大坑

是随机返回0、1、2这三个数,不可能返回其它东西,但是如果把它用在where里面,就会发生很神奇的事情,比如这个查询:

10230
来自专栏HansBug's Lab

1934: [Shoi2007]Vote 善意的投票

1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1174  ...

29470
来自专栏ml

内部类

1 package st; 2 //内部类 3 class RedCowForm 4 { 5 static String formName; ...

26550
来自专栏Kurt Niu 的博客

ThoughtWorks 百年不变的面试题之 --- Merchant's Guide To The Galaxy

Code: https://github.com/zifeiniu/Merchants-Guide-To-The-Galaxy

1.5K10
来自专栏章鱼的慢慢技术路

今日头条2018校园春季招聘研发岗位笔试(第一场)经验

12630
来自专栏Java帮帮-微信公众号-技术文章全总结

【学习经验】Java中常用英文

【学习经验】Java中常用英文 第一章: public['pʌblik] 公共的,公用的 static['stætik] 静的;静态的...

373100
来自专栏高性能服务器开发

携程面试题

冬天,西风凛冽,天空阴沉,行人都急匆匆的奔走,到了家,烤着炉子,外边洋洋洒洒的下起了雪。知道什么是“晚来天欲雪”,什么是“红泥小火炉”。

44230
来自专栏java一日一条

SQL数据库面试题以及答案

S#:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别 Course(C#,Cname,T#) 课程表

10830
来自专栏数据结构与算法

BZOJ1061: [Noi2008]志愿者招募(线性规划)

  申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。布布刚上任就遇到了一个难

16340
来自专栏牛客网

宜信大数据中心java研发岗面经

在我小时候,我极力装得像个大人,当我已经不再是小孩的时候,我又希望像个孩子。——列夫·托尔斯泰

15620

扫码关注云+社区

领取腾讯云代金券