当前位置: 首页 > 知识库问答 >
问题:

将if-elif-else语句放在一行上?

洪博涛
2023-03-14

我已经阅读了下面的链接,但没有回答我的问题
Python是否有三元条件运算符?(问题是关于将if-else语句压缩到一行)

是否有一种更简单的方法来编写if-elif-else语句,使其适合一行<例如,

if expression1:
   statement1
elif expression2:
   statement2
else:
   statement3

或者是一个真实的例子:

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0

我只是觉得如果上面的例子可以用下面的方式写,它看起来会更简洁。

x=2 if i>100 elif i<100 1 else 0 [WRONG]

共有3个答案

唐焕
2023-03-14

尽管有其他一些答案:是的,这是可能的:

if expression1:
   statement1
elif expression2:
   statement2
else:
   statement3

转换为以下一行:

statement1 if expression1 else (statement2 if expression2 else statement3)

事实上,你可以把它们筑巢到无限远。享受;)

伊飞光
2023-03-14

如果您只需要在不同情况下使用不同的表达式,则这可能适用于您:

expr1 if condition1 else expr2 if condition2 else expr

例如:

a = "neg" if b<0 else "pos" if b>0 else "zero"
国斌斌
2023-03-14

不,这是不可能的(至少对于武断的语句是不可能的),也不可取。将所有内容都放在一行很可能违反PEP-8,其中规定行的长度不得超过80个字符。

这也与Python的禅宗格格不入:“可读性很重要”。(在Python提示符下键入import this,阅读整个内容)。

可以在Python中使用三元表达式,但只能用于表达式,不能用于语句:

>>> a = "Hello" if foo() else "Goodbye"

编辑:

你修改后的问题现在显示,除了分配的值之外,这三个语句是相同的。在这种情况下,链式三元运算符确实有效,但我仍然认为它不太可读:

>>> i=100
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
0
>>> i=101
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
2
>>> i=99
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
1
 类似资料:
  • 我似乎搞不清楚下面的语句与和有关的问题是什么。请记住,仍然在开发中,我只是还没有能够在语句中测试它,所以很可能是错误的。 我得到的错误是: 而语句是这样的。

  • 本文向大家介绍Python if, elif, else,包括了Python if, elif, else的使用技巧和注意事项,需要的朋友参考一下 示例 在Python中,您可以定义一系列条件if,第一个条件用于elif其余条件,直到最后一个(可选)else用于其他条件条件未捕获的任何条件。 产出 Number is bigger than 2 使用else if代替elif会触发语法错误,因此是

  • Swift 条件语句 一个 if 语句 后可跟一个可选的 else if...else 语句,else if...else 语句 在测试多个条件语句时是非常有用的。 当你使用 if , else if , else 语句时需要注意以下几点: if 语句后可以有 0 个或 1 个 else,但是如果 有 else if 语句,else 语句需要在 else if 语句之后。 if 语句后可以有 0

  • else语句可以与if语句结合使用。 else语句包含else语句中的条件表达式解析为0或FALSE值时执行的代码块。 else语句是一个可选语句, else后面最多只能有一个else语句。 语法 (Syntax) if...else语句的语法是 - if expression: statement(s) else: statement(s) 流程图 (Flow Diagram) 例

  • if/then/elif/else构造具有多个else分支。 语法 (Syntax) F#编程语言中if/then/elif/else语句的语法是 - if expr then expr elif expr then expr elif expr then expr ... else expr 例子 (Example) let a : int32 = 100 (* che

  • 我试图检查一个进程(假设它被称为some_进程)是否正在服务器上运行。如果是,则回显1,否则回显0。 这是我正在使用的命令,但它只能部分工作(更多信息见下文)。注意,我需要在一行中编写脚本。 注:某些过程中的是为了防止grep自身返回。 如果某个_进程正在运行,则会回显“1”,这很好。但是,如果某个_进程未运行,则不会产生任何回声。