有趣的"Hello World"采访

Pip*_*iam 9 python

在我们的办公室里,我们有一个问题,就像这样.为了保持一致性,我将此上下文限制为python.我确定还有其他答案,但我真的只对python答案感兴趣.

say当我这样调用时,给我写一个名为的函数:

>>> say('Hello')('World')
Run Code Online (Sandbox Code Playgroud)

它只打印(不返回):

>>> say('Hello')('World')
Hello World
>>> 
Run Code Online (Sandbox Code Playgroud)

我们在今天的采访之后进行了一次元讨论,我说我总是希望申请人能够回答以下问题.

def say(x):
 print "Hello World"
 return lambda a:None
Run Code Online (Sandbox Code Playgroud)

我意识到有可能通过用lambda某种类型的内置替换函数来进一步缩短它,None但是我已经挖了但似乎找不到比lambda a:None

所以这里的整体问题是......

你能想出一种方法来缩短它,因为总体角色较少(忽略换行符).任何导入语句都会计入您的字符数.(52个字符)

UPDATE

(39个字符)

>>> def p(x):
...  print "Hello",x
>>> say=lambda x:p
>>> say("Hello")("World")
Hello World
>>>
Run Code Online (Sandbox Code Playgroud)

Python 3答案(48个字符)

>>> def say(x):
...  return lambda a:print("Hello World")
>>> say("Hello")("World")
Hello World
>>> 
Run Code Online (Sandbox Code Playgroud)

And*_*ark 14

Python 2.x答案

显而易见的答案实际上没有计算,因为它返回字符串而不是打印它:

>>> say = lambda x: lambda y: x + " " + y
>>> say('Hello')('World')
'Hello World'
Run Code Online (Sandbox Code Playgroud)

这个是45个字符计算换行符:

def p(x):
 print "Hello World"
say=lambda x:p
Run Code Online (Sandbox Code Playgroud)

这个方法将它降低到41个字符,但它看起来很奇怪,因为它使用一个参数但不使用另一个参数:

def p(x):
 print "Hello",x
say=lambda x:p
Run Code Online (Sandbox Code Playgroud)

Python 3.x答案

36个字符:

>>> say=lambda x:lambda y:print(x+" "+y)
>>> say('Hello')('World')
Hello World
Run Code Online (Sandbox Code Playgroud)

38个字符:

>>> say=lambda x:print(x,end=' ') or print
>>> say('Hello')('World')
Hello World
Run Code Online (Sandbox Code Playgroud)


The*_*ran 7

def say(x):
   print x,
   return say
Run Code Online (Sandbox Code Playgroud)


slo*_*rop 6

至少在Python 3中,print是一个返回的函数None,所以你可以这样做:

def say(x):
    return lambda a: print ('Hello World')
Run Code Online (Sandbox Code Playgroud)

或(保存更多字符):

say=lambda x:lambda y:print("Hello World")
Run Code Online (Sandbox Code Playgroud)