如何把多个语句放在一行?
我不确定在什么题目下完全思考这个问题,编码高尔夫似乎是适当的,如果有点不确定。
我知道一些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
>