在循环中的内联if语句中使用break会导致语法错误

基杜斯

我在尝试这个

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将求值并返回其值。

因此,xy应该是可以评估的东西,但是它break无法评估的控制流语句。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么备用语法switch语句中的输出会导致语法错误

循环中的IF语句引发语法错误

在Go中的类型切换语句中检查“ struct”类型会导致语法错误

在OCaml的assert语句中使用<>会导致错误

在for eachrow循环中使用变量会导致错误

MySQL-在where语句中使用<>时出现语法错误(插入)

如何在case语句中使用流程替换而不出现语法错误?

速记 c if else 语句和 break 在循环中的组合使用导致错误

在forvalues循环中使用local报告语法错误

For循环if语句语法错误

使用Access和Pyodbc的INSERT语句中的语法错误

在 for 循环中添加 if 语句会导致“在“}”中出现“意外的 '}””错误

使用jquery动态创建div会导致语法错误

使用CTE的MariaDB 10.3.14 DELETE语句导致语法错误

SQL语句中的语法错误问题

JavaScript switch语句中的语法错误

Perl在if语句中获取语法错误

sql 语句中的语法错误?

条件语句中语法错误的原因

INSERT INTO语句中的语法错误

在INSERT INTO语句中获取语法错误

条件语句中的 Bash 语法错误

OleDbException: INSERT INTO 语句中的语法错误

if 语句中的冒号语法错误

MySQL INSERT INTO 语句中的语法错误

在WHEN子句中使用>时,CASE语法错误

当在while循环中使用break语句时,Python程序给出错误的输出

为什么使用双&符的Ruby表达式使用return语句会导致语法错误

jinja:在if语句中使用for循环中的变量