在我们的办公室里,我们有一个问题,就像这样。为了保持一致性,我将此上下文限制为python。我确定还有其他答案,但我真的只对python答案感兴趣。
当我这样调用时,给我写一个名为say
的函数:
>>> say('Hello')('World')
它只打印(不返回):
>>> say('Hello')('World')
Hello World
>>>
我们在今天的采访之后进行了一次元讨论,我说我一直希望申请人能够回答以下问题。
def say(x):
print "Hello World"
return lambda a:None
我意识到有可能通过将lambda
函数替换为返回None
的某种类型的内置函数来进一步缩短这一点,但我已经挖了,似乎找不到一个比lambda a:None
所以这里的整体问题是......
你能想出一种方法来缩短它,因为总体角色较少(忽略换行符)。任何导入语句都会计入您的字符数。 (52个字符)
更新
(39个字符)
>>> def p(x):
... print "Hello",x
>>> say=lambda x:p
>>> say("Hello")("World")
Hello World
>>>
Python 3答案 (48个字符)
>>> def say(x):
... return lambda a:print("Hello World")
>>> say("Hello")("World")
Hello World
>>>
答案 0 :(得分:13)
Python 2.x答案
显而易见的答案实际上没有计算,因为它返回字符串而不是打印它:
>>> say = lambda x: lambda y: x + " " + y
>>> say('Hello')('World')
'Hello World'
这个是45个字符计算换行符:
def p(x):
print "Hello World"
say=lambda x:p
此方法将其降低到41个字符,但它看起来有点奇怪,因为它使用一个参数而不是另一个参数:
def p(x):
print "Hello",x
say=lambda x:p
Python 3.x答案
36个字符:
>>> say=lambda x:lambda y:print(x+" "+y)
>>> say('Hello')('World')
Hello World
38个字符:
>>> say=lambda x:print(x,end=' ') or print
>>> say('Hello')('World')
Hello World
答案 1 :(得分:6)
def say(x):
print x,
return say
答案 2 :(得分:6)
至少在Python 3中,print
是一个返回None
的函数,所以你可以这样做:
def say(x):
return lambda a: print ('Hello World')
或(另外保存几个字符):
say=lambda x:lambda y:print("Hello World")
答案 3 :(得分:0)
say = lambda y:(lambda x:print(y+' '+x))
say('Hello')('World')
hello world