我在尝试这个
while True:
break if input() == 'q' else input()
这会导致语法错误
break if input() == 'q' else input()
^
SyntaxError: invalid syntax
我知道还有其他方法可以做到这一点,但我想知道为什么这没有用。
谢谢!
这就是所谓的条件式和用于该格拉默定义像这样
conditional_expression ::= or_test ["if" or_test "else" expression]
而or_test
这样定义
or_test ::= and_test | or_test "or" and_test
而and_test
这样定义
and_test ::= not_test | and_test "and" not_test
和not_test
被定义像这样
not_test ::= comparison | "not" not_test
和comparison
被定义像这样
comparison ::= or_expr ( comp_operator or_expr )*
和comp_operator
被定义像这样
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
| "is" ["not"] | ["not"] "in"
和or_expr
被定义像这样
or_expr ::= xor_expr | or_expr "|" xor_expr
和xor_expr
被定义像这样
xor_expr ::= and_expr | xor_expr "^" and_expr
和and_expr
被定义像这样
and_expr ::= shift_expr | and_expr "&" shift_expr
和shift_expr
被定义像这样
shift_expr ::= a_expr | shift_expr ( "<<" | ">>" ) a_expr
和a_expr
被定义像这样
a_expr ::= m_expr | a_expr "+" m_expr | a_expr "-" m_expr
和m_expr
被定义像这样
m_expr ::= u_expr | m_expr "*" u_expr | m_expr "//" u_expr | m_expr "/" u_expr
| m_expr "%" u_expr
和u_expr
被定义像这样
u_expr ::= power | "-" u_expr | "+" u_expr | "~" u_expr
和power
被定义像这样
power ::= primary ["**" u_expr]
和primary
被定义像这样
primary ::= atom | attributeref | subscription | slicing | call
break
语法中没有where语句,这就是为什么它由于编译时错误而失败。
引用文档,
该表达式
x if C else y
首先计算条件,C
而不是x
。如果C
为true,x
则求值并返回其值;否则为false 。否则,y
将求值并返回其值。
因此,x
和y
应该是可以评估的东西,但是它break
是无法评估的控制流语句。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句