如何把多个语句放在一行?

我不确定在什么题目下完全思考这个问题,编码高尔夫似乎是适当的,如果有点不确定。

我知道一些Python的理解,但他们似乎很难'读'。 我看到它的方式,理解可能会完成相同的代码如下:

for i in range(10): if i == 9: print('i equals 9') 

这段代码比现在的理解更容易阅读,但是我注意到你不能在一行中有两个':'…这也带给我了…

我的问题:

有什么办法可以把下面的例子变成一行。

 try: if sam[0] != 'harry': print('hello', sam) except: pass 

像这样的东西会很棒:

 try: if sam[0] != 'harry': print('hellp', sam) except:pass 

但是我又遇到了冲突的':'我也想知道是否有办法尝试 (或类似的东西)除了,似乎完全没有意义,我需要除了:通过在那里。 它是一个浪费线。

谢谢你的input…这里有一个笑脸:D

不幸的是,你想要的东西对于Python来说是不可能的(这使得Python对命令行单线程程序来说是无用的)。 即使明确使用parens也不能避免语法exception。 你可以用一系列简单的语句来表示,用分号分隔:

 for i in range(10): print "foo"; print "bar" 

但是,只要添加一个引入缩进块的构造(如if ),就需要换行符。 也,

 for i in range(10): print "i equals 9" if i==9 else None 

是合法的,可能接近你想要的。

至于try ... except事情: 没有 except这将是完全无用的。 try说:“我想运行这个代码,但它可能会抛出一个exception”。 如果你不关心这个例外情况,不要try 。 但是一旦你把它放进去,你就说“我想处理一个潜在的例外”。 然后pass说你不想具体处理。 但这意味着你的代码将继续运行,否则不会。

你可以使用内置的exec语句,例如:

 exec("try: \n \t if sam[0] != 'harry': \n \t\t print('hello', sam) \nexcept: pass") 

\n是换行符, \t用作缩进(一个制表符)。
此外,你应该计算你使用的空间,所以你的缩进完全匹配。

然而,正如所有其他的答案已经说过,这当然只有当你真的要把它放在一个线上才能使用。

exec是一个相当危险的语句(特别是在构buildwebapp时),因为它允许执行任意的Python代码。

不要这样做!

你所描述的不是一种理解。 这是不可理解的!

从Python代码的PEP 8风格指南 ,这是每个Python开发人员必读的内容:

  • 复合语句(在同一行上的多个语句)通常是不鼓励的。

是:

  if foo == 'blah': do_blah_thing() do_one() do_two() do_three() 

而不是:

  if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three() 

以下是一个示例性的理解来作出区分:

 >>> [i for i in xrange(10) if i == 9] [9] 

你混合了很多东西,这很难回答你的问题。 简单的答案是:据我所知,你想要做的只是不可能在Python中 – 这是很好的理由!

更长的答案是,如果你想用Python开发,你应该让自己更适应Python。 理解不难阅读。 你可能不习惯阅读它们,但是如果你想成为一名Python开发者,你必须习惯它。 如果有更适合您需求的语言,请select一个。 如果你selectPython,准备用pythonic的方式来解决问题。 当然,你可以自由地与Python作斗争,但它不会很有趣! 😉

如果你想告诉我们你真正的问题是什么,你甚至可能会得到pythonic的答案。 “一条线”我们通常不是一个编程问题。

也许用“和”或“或”

错误后需要写“或”

真正需要写出“和”

喜欢

 n=0 def returnsfalse(): global n n=n+1 print ("false %d" % (n)) return False def returnstrue(): global n n=n+1 print ("true %d" % (n)) return True n=0 returnsfalse() or returnsfalse() or returnsfalse() or returnstrue() and returnsfalse() 

结果:

 false 1 false 2 false 3 true 4 false 5 

或者也许喜欢

 (returnsfalse() or true) and (returnstrue() or true) and ... 

通过search谷歌“如何把多个语句放在一行python”,不直接回答问题,也许别人需要这个。

它acctualy可能;-)

 # not pep8 compatible^ sam = ['Sam',] try: print('hello',sam) if sam[0] != 'harry' else rais except: pass 

你可以在Python中做非常丑陋的东西,比如:

 def o(s):return''.join([chr(ord(n)+(13if'Z'<n<'n'or'N'>n else-13))if n.isalpha()else n for n in s]) 

这是一个具有99个字符的一行的rot13 / cesaencryptionfunction。

这里是一个例子:

对于我在范围内(80,90):print(i,end =“”)if(i!= 89)else print(i)

产量:80 81 82 83 84 85 86 87 88 89

>