Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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_Loops_If Statement_Break_Ternary Operator_Python 2.x - Fatal编程技术网

为什么;否则,请中断“;python中的中断?

为什么;否则,请中断“;python中的中断?,python,loops,if-statement,break,ternary-operator,python-2.x,Python,Loops,If Statement,Break,Ternary Operator,Python 2.x,我试图使用if-else表达式,如果if条件失败,该表达式应该会中断循环,但会出现无效语法错误 示例代码: a = 5 while True: print(a) if a > 0 else break a-=1 当然,如果我用传统的方式(不使用一行)写作,它是有效的 请让我知道在else关键字之后使用break命令有什么问题。如果我运行此命令,我会得到以下错误: ... print(a) if a > 0 else break File "<std

我试图使用if-else表达式,如果
if
条件失败,该表达式应该会中断循环,但会出现
无效语法
错误

示例代码:

a = 5
while True:
    print(a) if a > 0 else break
    a-=1
当然,如果我用传统的方式(不使用一行)写作,它是有效的


请让我知道在
else
关键字之后使用
break
命令有什么问题。

如果我运行此命令,我会得到以下错误:

...     print(a) if a > 0 else break
  File "<stdin>", line 2
    print(a) if a > 0 else break
                               ^
SyntaxError: invalid syntax
是一个三元运算符。三元运算符是no
if
语句。这些工具与语法一起工作:

<expr1> if <expr2> else <expr3>

您可以在和中了解更多信息。

如果
是一个表达式,
break
类似于
return
是一个语句。不能在一个句子中使用两个语句(除非使用难看的分号)。我知道如果我们能做到这一点会很酷,但唉,事情就是这样。

简单地说,你误用了“一行
if
语句”()。它总是计算为一个表达式(即一个值)。就是

<expr1> if <condition> else <expr2>
当然,括号是完全不必要的(甚至是不鼓励的),但希望对理解这一行的含义有用

所以,

print(a) if a > 0 else break
尝试计算
print(a)
(根据Python3中
print()
的定义,它总是返回
None
——完全有效,但可能不是您通常想要的),然后计算
break
,因为它是a,所以不会计算任何值,因此出现
无效语法
错误

因此,如果您想根据条件执行两条语句中的一条,您确实需要
威廉·范昂森。在一行中可能会有一些很难做到的方法,但在Python中,多行是解决类似问题的常用方法。

Willem Van Onsem的答案有很多有用的信息,但我喜欢这个答案的清晰性和实用性;更容易记住的是,你不能在一个句子中使用两个语句。
a = 5
while True:
    if a > 5:
        print(a)
    else:
        break
    a -= 1
<expr1> if <condition> else <expr2>
y = 0
x = (5 if (y > 0) else 6)
print(x) # 6
print(a) if a > 0 else break