如何用两个不等式简化表达式:如果x <= y和x> = n

问题描述

我已经编写了这段代码来测试某物相对于其他物的位置。它产生我想要的结果,例如x = 4 -> Truex = 11 -> False。但是我想知道如何用一种更pythonic的方式/一行写出来。

x = 4
z = 5
y = z + 5
n = z - 5
if x <= y and x => n:
    print(True)
else:
    print(False)

解决方法

如果要检查x是否在z的某个范围内,请使用简单的差异并取绝对值:

x = 4
z = 5
span = 5
print(abs(x - z) <= span)

在python中,比较运算符的结果几乎总是布尔值。您不需要if即可将表达式的结果转换为布尔值。而是直接打印。

如果由于某种原因不想调用abs,则可以使用以下事实:在python中,链接的运算符与and隐式组合:

print(z - span <= x <= z + span)

这等效于您的原始代码,以及

print(z - span <= x and x <= z + span)

链接运算符的好处是,如果用复杂的表达式替换x,则在我显示的前两个示例中将只对它进行一次评估,而在第三个示例中将对其进行两次评估。

,

此解决方案仅适用于整数,并且行数相同,唯一的区别是代替了两个条件,我使用一个列表检查x是否在range(n,y + 1)内

x = 4
z = 5
y = z + 5
n = z - 5
if x in range(n,y+1):
    print(True)
else:
    print(False)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...