Python 如何用两个不等式简化表达式:if x<;=y和x>;=N
我写这段代码是为了测试某物相对于其他事物的位置。它产生我想要的结果,例如Python 如何用两个不等式简化表达式:if x<;=y和x>;=N,python,algorithm,comparison-operators,inequality,Python,Algorithm,Comparison Operators,Inequality,我写这段代码是为了测试某物相对于其他事物的位置。它产生我想要的结果,例如x=4->True,x=11->False。但我想知道我怎么能用一种更为通俗的方式/一行来写这篇文章 x = 4 z = 5 y = z + 5 n = z - 5 if x <= y and x => n: print(True) else: print(False) x=4 z=5 y=z+5 n=z-5 如果x n: 打印(真) 其他: 打印(假) 此解决方案仅适用于整数,而且行数相同,唯
x=4->True
,x=11->False
。但我想知道我怎么能用一种更为通俗的方式/一行来写这篇文章
x = 4
z = 5
y = z + 5
n = z - 5
if x <= y and x => n:
print(True)
else:
print(False)
x=4
z=5
y=z+5
n=z-5
如果x n:
打印(真)
其他:
打印(假)
此解决方案仅适用于整数,而且行数相同,唯一的区别是我使用了一个列表来检查x是否在范围内(n,y+1)
如果要检查
x
是否在z
的某个范围内,请使用简单的差值并取绝对值:
x = 4
z = 5
span = 5
print(abs(x - z) <= span)
这相当于您的原始代码,也相当于
print(z - span <= x and x <= z + span)
print(z-span您可能会问关于链式运算符的问题如果是n,或者您可能是指n
-您的代码与问题标题之间存在不一致,即“或等于”bit应该存在或不存在。但无论哪种情况,你都有希望得到原则。我不确定你的目标是“一行”是一个好主意:争取可读的可维护代码,而不是低行数。像你使用的显式简单条件没有错。@barny.携带“显式”极端的情况也一样糟糕。我同意OP的条件是完全清晰的,但是if
语句本身确实是多余的。@barny.OP引入了两个额外的变量和一个不必要的if
语句,它将一个已经bool的量转换为bool
@barny。请记住,您通常不会这样做不需要打印中间数量。您可以对其进行操作或将其返回到其他地方进行操作。清晰度还取决于您对python的总体熟悉程度。@barny。最后,请记住,OP特别要求在可能的情况下编写一行程序。绝对比OP的更好;或者对于“不对称”当然,但是为什么呢?没错,但是这个问题有点抽象,我把它解释为与其他语言不同。
print(z - span <= x <= z + span)
print(z - span <= x and x <= z + span)