条件

时间:2016-07-21 01:25:32

标签: python variables if-statement conditional

所以我并不完全确定如何准确地提出这个问题,但基本上我想知道两个变量之间的任何值是否也在两个其他变量之间。因此,例如,这里有一个代码可能看起来像我解释

的样本
var1 = 0
var2 = 20
var3 = 5
var4 = 15
if var3 <= [any value in range var1 to var2] <= var4:
    do something

所以基本上就是这样,但我不确定代替括号会是什么,或者是否有另一种方法可以做到。对不起,如果有一个简单的解决方案,我很累。谢谢!

5 个答案:

答案 0 :(得分:2)

我对其他答案的复杂性感到惊讶。这应该只是:

public function update(){
    global $database;
    $attributes = $this->attributes();
    $attribute_pairs = array();
    foreach ($attributes as $key => $value) {
        # code...
        $attribute_pairs[] = "$key = $value";
    }

    $sql = "UPDATE ".self::$table_name." SET ";
    $sql .= join(", ", $attribute_pairs);
    $sql .= " WHERE id=".$this->id;
    $database->query($sql);
    return ($database->affected_rows() == 1) ? true : false;
}

请注意,交点是对称的,因此def intersect(a, A, x, X): '''Return True if any number in range(a, A+1) is in range(x, X+1).''' return a <= X and x <= A 始终保持不变。

所有交叉点可能性:

intersect(a,b,x,y) == intersect(x,y,a,b)

这与上述功能相对应。

最后,确保这与John Kugelman的答案没有什么不同:

   a...A
x..X

   a...A
 x..X

   a...A
  x..X

   a...A
   x..X

   a...A
    x..X

   a...A
     x..X

   a...A
      x..X

   a...A
       x..X

将此作为def their(a, b, x, y): return ((x <= a <= y or x <= b <= y) or (a <= x <= b or a <= y <= b)) def my(a, A, x, X): return a <= X and x <= A from itertools import product for x in product(range(5), repeat=4): if my(*x) != their(*x): if x[0] <= x[1] and x[2] <= x[3]: print('[{1}, {2}] and [{3}, {4}] intersect according to {0}.' .format('me' if my(*x) else 'them', *x)) else: print('{} say it intersects, when input is incorrect.' .format('I' if my(*x) else 'They')) 输出运行:

python intersect.py | uniq -c

答案 1 :(得分:1)

让我们使用一些数学符号。所以你有两个数字范围,[ a b ]和[ x y ],其中[< em> a , b ]代表“ a b 之间的所有数字”的概念。

一种解释是,您希望查看[ a b ]是否为< x 子集 y ]。

if a >= x and b <= y:
    ...

另一个是你想看看[ a b ] 是否相交 [ x y ]以任何方式。当两个端点 a b 中的任何一个包含在[ x y ]或者副本中时,会发生这种情况反之亦然。

if ((x <= a <= y or x <= b <= y) or
    (a <= x <= b or a <= y <= b)):
    ...

答案 2 :(得分:0)

永远记住当你想为某个值设置一个条件时,让我们在x和y之间说'a',你可以设置一个条件,a>x and a<y,这就是你想要的:

if var3 >= var1 and var3 <= var2 and var3 <=var4:
    do something

我不确定您是否希望var3同时为var3 >= var1 and var3 <= var2 and var3 <=var4或var3为var3 >= var1 and var3 <= var2 or var3 <=var4,请根据您的预期输出进行更改。

希望这会有所帮助,请告诉我它是否对你不起作用。这是一个典型的例子,但不是pythonic方式:)

答案 3 :(得分:0)

你的意思是:

 for i in range(var1, var2+1):
    if var3 <= i <=var4:
      do something

答案 4 :(得分:0)

假设在提前知道的变量之间没有排序......

min34 = min(var3, var4)
max34 = max(var3, var4)

if ( (min34 < var1 && max34 > var1) || (min34 < var2 && max34 > var2) ) :
    do something

如果范围边缘计为“介于两者之间”,请使用“&lt; =”和“&gt; =”。