Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “有趣”;“你好,世界”;采访_Python - Fatal编程技术网

Python “有趣”;“你好,世界”;采访

Python “有趣”;“你好,世界”;采访,python,Python,我们在办公室面试时会问这样一个问题。为了保持一致性,我将此上下文限制为python。我肯定还有其他答案,但我真的只对python的答案感兴趣 编写一个名为的函数,在这样调用时说: >>> say('Hello')('World') 它只打印(不返回): 今天面试结束后,我们进行了一次元讨论,我说我一直希望应聘者回答以下问题 def say(x): print "Hello World" return lambda a:None 我意识到有可能通过将lambda函数替换为

我们在办公室面试时会问这样一个问题。为了保持一致性,我将此上下文限制为python。我肯定还有其他答案,但我真的只对python的答案感兴趣

编写一个名为
的函数,在这样调用时说

>>> say('Hello')('World')
它只打印(不返回):

今天面试结束后,我们进行了一次元讨论,我说我一直希望应聘者回答以下问题

def say(x):
 print "Hello World"
 return lambda a:None
我意识到有可能通过将
lambda
函数替换为某种返回
None
的内置函数来进一步缩短这个时间,但我已经挖掘了,似乎找不到比
lambda:None
短的函数

所以这里的整体问题是

你能想出一种方法来缩短这个长度吗,比如在更少的字符中(忽略换行符)。任何导入语句都会在字符计数中计数。(52个字符)

更新

(39个字符)

Python 3答案 (48个字符)


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
>>> say=lambda x:print(x,end=' ') or print
>>> say('Hello')('World')
Hello World
say=lambda x:lambda y:print("Hello World")
38个字符:

>>> say=lambda x:lambda y:print(x+" "+y)
>>> say('Hello')('World')
Hello World
>>> say=lambda x:print(x,end=' ') or print
>>> say('Hello')('World')
Hello World
say=lambda x:lambda y:print("Hello World")

至少在Python 3中,
print
是一个返回
None
的函数,因此可以执行以下操作:

def say(x):
    return lambda a: print ('Hello World')
或(再保存几个字符):


你想
实际使用它的参数吗?还是应该总是打印“Hello World”?这篇文章的全部要点是,他认为如果不使用它的参数,那会很有趣。是的,我们对总是打印“Hello World”的东西没什么意见,因为我们经常在表达问题时,我们的语言为这个输出留下了空间。是什么让这个有趣呢?为什么这是一个好的面试问题?我希望您不要期望开发人员以foo(arg)(arg)的形式编写函数。我会澄清我的问题。是的,这基本上是任何有能力的程序员都应该给出的答案。我的意思是,在一次严肃的面试中,头脑正常的人会为了一份他非常非常想要的工作而尝试上述方法吗?这可能还取决于面试的语气,我可以想象自己在回答之前把第一个扔进去只是为了好玩correctly@F.J-抱歉,我一直在重复说明。import语句使您的字符计数更长。我数76。我再次澄清了我的问题。这很有趣。稍后我会回到这里,检查是否有更好的答案,但现在,你已经找到了。请参阅我上面的编辑。您的仍然返回一个函数。抱歉说得这么具体。鬼鬼祟祟的蟒蛇3回答。我喜欢!实际上,您还必须包括
++'+
,以便根据问题来分隔单词。如果你这样做了,你就与阿勒迪给出的答案有直接的联系。
say=lambda x:lambda y:print("Hello World")
say = lambda y:(lambda x:print(y+' '+x))
say('Hello')('World')
hello world