基于带有lambda表达式的random int打印"Left"或"Right"?

ner*_*lad 0 python lambda

我读了一个(有点)幽默的故事,关于TSA向开发人员支付140万美元的应用程序只是输出一个随机的"左"或"右"箭头.我决定在Python中自己尝试一下.

我想知道我是否可以使用Lambda表达式或列表理解等缩短if-else语句...有条件地打印字符串的语法简写.

import os, datetime, random
while True:
    os.system('clear')
    print "ENTER to continue, or type 'quit'"
    print datetime.datetime.now()
    print ''
    i = random.randint(1,2)
    if i == 1:
        print 'Left'
    else:
        print 'Right'
    print ''
    prompt = raw_input("")
    if prompt == 'quit':
        quit()
Run Code Online (Sandbox Code Playgroud)

Jos*_*ton 5

您可以使用更好的随机函数:

import random
print(random.choice(('Left', 'Right')))
Run Code Online (Sandbox Code Playgroud)

你也可以使用这个技巧:

('Left', 'Right')[random.randint(0, 1)]
Run Code Online (Sandbox Code Playgroud)

哪个将随机索引到元组.一起去的choice,但.

查看随机文档.

此外,TSA应用程序的免税额为360,000美元.请参阅此hackernews评论,了解潜在成本的详细信息.

  • 小调:如果你这么做的话,使用`tuple`字面值,而不是`list`字面值.`tuple`将在加载时构造并重用; 每次进行此调用时,`list`都将在运行时构建,这只会增加不必要的开销. (4认同)