在一行代码中使用python的if else语句
我如何在一行中编写一个简单的python?
什么是Python中的三元运算符?
我们可以对复杂的if和else语句使用一个衬里吗?
在本教程中,将介绍不同的示例,以理解和了解Python中是否存在条件的三元运算符的使用。
条件表达式(有时称为"三元运算符")在所有Python操作中具有最低的优先级。
从C,C ++或者Perl进入Python的程序员有时会错过所谓的三元运算符?:。
它最常用于避免几行代码和一个用于简单决策的临时变量。
我将不介绍通用三元运算符的细节,因为它在Python中用于循环和控制流语句。
其中我们将专注于使用三元运算符在一行中学习python(如果不是)
Python 在一行内的if else
语法
Python中单if和else语句的一般语法为:
if condition: value_when_true else: value_when_false
现在,如果我们希望使用三元运算符将其编写为一行,则语法将是:
value_when_true if condition else value_when_false
用这种语法,首先要评估"其他条件"。
如果条件返回" True",则返回" value_when_true"
如果条件返回" False",则返回" value_when_false"
同样,如果我们根据条件在常规的" if else块"中分配了变量
if condition: value = true-expr else: value = false-expr
可以用单行写成相同的内容:
value = true-expr if condition else false-expr
同样其中首先要评估条件。
如果条件返回" True",则将" true-expr"分配给值对象
如果条件返回" False",则将" false-expr"分配给值对象
对于像这样的简单情况,我发现能够以一行而不是四行来表示该逻辑非常好。
请记住,作为一名编码人员,我们花费的时间比编写代码要花费更多的时间,因此Python的简洁性是无价的。
要记住的一些重要点:
我们可以在Python中使用三元表达式,但只能用于表达式,不能用于语句。
我们不能在一行中使用Python
if..elif..else
块。三元这个名字意味着操作员只有三部分:
condition
,then
和else
。尽管有一些技巧可以将" if..elif..else块"修改为" if..else块",然后在单行中使用它,但这会因条件而复杂,应避免
如果使用" if-else块",将仅执行其中一个表达式。
总是使用三元表达式来压缩代码虽然很诱人,但要意识到,如果条件以及正确和错误的表达式非常复杂,则可能会牺牲可读性。
Python脚本示例
这是一个简单的脚本,我们在if条件中使用比较运算符
首先收集整数形式的用户输入并将该值存储到
b
中如果b大于或者等于0,则返回正数,这将是True条件。
如果
b
返回False
,即上述条件不成功,则返回负数最终的返回值,即正数或者负数,都存储在对象" a"中
最后打印出值
a
的值
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) a = "positive" if b >= 0 else "negative" print(a)
此代码的多行形式为:
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) if b >= 0: a = "positive" else: a = "negative" print(a)
输出:
# python3 /tmp/if_else_one_line.py Enter value for b: 10 positive # python3 /tmp/if_else_one_line.py Enter value for b: -10 negative
Python一行代码内的 if..elif..else
现在,正如我之前所说的,不可能使用三元表达式在一行中使用" if..elif..else块"。
尽管我们可以"破解"这种方式,但是根据PEP-8指南,请确保Python中一行的最大允许长度为79
语法
我们有这个if..elif..else块,其中我们根据条件检查返回表达式:
if condition1: expr1 elif condition2: expr2 else: expr
我们可以使用以下语法在一行中编写该" if..elif..else"块:
expr1 if condition1 else expr2 if condition2 else expr
用这种语法,
首先评估" condition2",如果返回" True",则返回" expr2"
如果condition2返回False,则对condition1进行求值; True返回True,则返回expr1.
如果condition1也返回False,则执行else并返回expr。
如我们所见,如果我们在多行if..elif..else块
中阅读它,会更容易,而对于初学者来说,这变得很难理解。
我们可以在此语法中添加多个if else block
,但我们还必须遵守PEP-8准则
expr1 if condition1 else expr2 if condition2 else expr-n if condition-n else expr
Python脚本范例1
在此示例脚本中,我们从最终用户那里收集一个整数值并将其存储在b中。
执行顺序为:
如果b的值小于0,则返回neg
如果" b"的值大于" 0",则返回pos。
如果两个条件均返回False,则返回零
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) a = "neg" if b < 0 else "pos" if b > 0 else "zero" print(a)
该代码的多行形式为:
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) if b < 0: a = "neg" elif b > 0: a = "pos" else: zero print(a)
输出(当" if"条件为" True"时)
# python3 /tmp/if_else_one_line.py Enter value for b: -5 neg
输出(当if条件为False和elif条件为True时)
# python3 /tmp/if_else_one_line.py Enter value for b: 5 pos
输出(当if和elif条件均为False时)
# python3 /tmp/if_else_one_line.py Enter value for b: 0 zero
Python脚本示例2
我们将在此示例脚本中添加更多其他块,检查的顺序如下:
收集用户输入的值" b",该值将转换为整数类型
如果b的值等于100,则返回100;如果返回False,则将执行下一个if else条件。
如果b的值等于50,则返回50;如果返回False,则将执行下一个if else条件。
如果b的值等于40则返回40,如果返回False则执行下一个if else条件。
如果b的值大于100则返回大于100,如果b的值返回False则接下来转到else块
最后,如果所有条件都返回" False",则返回小于百
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) a = "equal to 100" if b == 100 else "equal to 50" if b == 50 else "equal to 40" if b == 40 else "greater than 100" if b > 100 else "less than 100" print(a)
此示例的多行形式为:
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) if b == 100: a = "equal to 100" elif b == 50: a = "equal to 50" elif b == 40: a = "equal to 40" elif b > 100: a = "greater than 100" else: a = "less than 100" print(a)
输出:
# python3 /tmp/if_else_one_line.py Enter value for b: 50 equal to 50 # python3 /tmp/if_else_one_line.py Enter value for b: 110 greater than 100 # python3 /tmp/if_else_one_line.py Enter value for b: -12 less than 100 # python3 /tmp/if_else_one_line.py Enter value for b: 40 equal to 40
Python将if..else嵌套在一行中
我们还可以使用三元表达式在Python的一行上定义"嵌套的if..else块"。
语法
如果我们有使用nested if else block
的多行代码,则如下所示:
if condition1: expr1 elif condition-m: expr-m else: if condition3: expr3 elif condition-n: expr-n else: expr5
在Python中使用此"嵌套的if else块"的单行语法为:
expr1 if condition1 else expr2 if condition 2 else (expr3 if condition3 else expr4 if condition 4 else expr5)
其中我们使用"三元"表达式在" else块"中添加了嵌套的" if..elif..else"。
按以下顺序进行检查的顺序
如果condition1返回True,则返回expr1;如果False,则检查下一个条件
如果条件-m返回True,则返回expr-m,如果返回False,则检查带有其他嵌套的if..elif..else的else块。
如果condition3返回True,则返回expr3;如果false返回false,则返回嵌套块中的下一个条件。
如果条件-n返回True,则返回expr-n;如果返回False,则从其他条件返回expr5.
Python脚本示例
在这个例子中,我在一个衬里的" else block"中使用了" nested if else"。
执行顺序将按照提供的顺序:
首先,从最终用户那里收集b的整数值
如果b的值等于100,则if条件返回True并返回100。
如果b的值等于50,则elif条件返回True并返回50
如果if和elif条件均返回False,则执行else else if和else条件的地方执行else块。
在" else块"内部,如果b大于100,则返回大于100;如果返回False,则返回小于100。
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) a = "equal to 100" if b == 100 else "equal to 50" if b == 50 else ("greater than 100" if b > 100 else "less than 100") print(a)
此代码的多行形式为:
#!/usr/bin/env python3 b = int(input("Enter value for b: ")) if b == 100: a = "equal to 100" elif b == 50: a = "equal to 50" else: if b > 100: a = "greater than 100" else: a = "less than 100" print(a)
输出:
# python3 /tmp/if_else_one_line.py Enter value for b: 10 less than 100 # python3 /tmp/if_else_one_line.py Enter value for b: 100 equal to 100 # python3 /tmp/if_else_one_line.py Enter value for b: 50 equal to 50 # python3 /tmp/if_else_one_line.py Enter value for b: 110 greater than 100