如何解决如何用两个不等式简化表达式:如果x <= y和x> = n
我已经编写了这段代码来测试某物相对于其他物的位置。它产生我想要的结果,例如x = 4 -> True
,x = 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。