Python 有人能解释一下带多个条件的while循环是如何工作的吗

Python 有人能解释一下带多个条件的while循环是如何工作的吗,python,while-loop,Python,While Loop,有人能解释一下While循环是如何工作的,这段代码是如何最终得到结果的:3和1,4和0。怎样谢谢 i = 2 j = 2 while i < 4 or j > 2: i += 1 j -= 1 print(i, j) 在第一次迭代中,i==2,j==2。条件i2为假。当您将条件与或组合时,如果其中一个条件为真,则为真,因此组合的条件为真,我们进入循环体 然后它将i加1,j减去1,并打印新值31 在下一次迭代中,i2仍然为假。因为其中一个是真的,或者条件是真

有人能解释一下While循环是如何工作的,这段代码是如何最终得到结果的:3和1,4和0。怎样谢谢

i = 2
j = 2

while i < 4 or j > 2:
    i += 1
    j -= 1
    print(i, j)
在第一次迭代中,i==2,j==2。条件i<4为真,而j>2为假。当您将条件与或组合时,如果其中一个条件为真,则为真,因此组合的条件为真,我们进入循环体

然后它将i加1,j减去1,并打印新值31

在下一次迭代中,i<4仍然为真,j>2仍然为假。因为其中一个是真的,或者条件是真的,所以我们进入循环体

然后递增i,递减j,并打印新值4 0

在下一次迭代中,i<4为假,j>2为假。由于这两个条件都为假,or条件也为假。因此循环停止。

在第一次迭代中,i==2,j==2。条件i<4为真,而j>2为假。当您将条件与或组合时,如果其中一个条件为真,则为真,因此组合的条件为真,我们进入循环体

然后它将i加1,j减去1,并打印新值31

在下一次迭代中,i<4仍然为真,j>2仍然为假。因为其中一个是真的,或者条件是真的,所以我们进入循环体

然后递增i,递减j,并打印新值4 0


在下一次迭代中,i<4为假,j>2为假。由于这两个条件都为假,or条件也为假。因此循环停止。

似乎您需要一个包含调试器的适当IDE。这样,您就可以逐行检查代码,并查看每个变量发生了什么。我建议。他们有免费的社区版

Line number     value of i    value of j    i < 4     j > 2     or of these
Program start   -/-           -/-           -/-
Line 1          2             0             -/-
Line 2          2             2             -/-
Line 4          2             2             True      False     True
Line 5          3             2             -/-
Line 6          3             1             -/-
Line 7          ^print        ^print
Line 4          3             1             True      False     True
Line 5          4             1             -/-
Line 6          4             0             -/-
Line 7          ^print        ^print
Line 4          4             0             False     False     False
End of program                                                  ^jump out of while loop

似乎您需要一个包含调试器的适当IDE。这样,您就可以逐行检查代码,并查看每个变量发生了什么。我建议。他们有免费的社区版

Line number     value of i    value of j    i < 4     j > 2     or of these
Program start   -/-           -/-           -/-
Line 1          2             0             -/-
Line 2          2             2             -/-
Line 4          2             2             True      False     True
Line 5          3             2             -/-
Line 6          3             1             -/-
Line 7          ^print        ^print
Line 4          3             1             True      False     True
Line 5          4             1             -/-
Line 6          4             0             -/-
Line 7          ^print        ^print
Line 4          4             0             False     False     False
End of program                                                  ^jump out of while loop

如果希望先看到“2 2”,则必须将打印语句放在算术运算之前。正如您正式要求的那样,循环将应用这些操作,直到'or'的任何一个子句都不为真,每次在进入下一步之前都会打印结果。

如果您希望先看到“2 2”,则必须将打印语句放在算术运算之前。正如您正式要求的那样,循环将应用这些操作,直到'or'的任何一个子句都不为真,每次都会在进入下一步之前打印结果。

我穿着睡衣在家,所以我没有工具来检查它,我对理论也太累了,但这里躺着一个毛茸茸的大怪物:

它们都给出了与op相同的结果

i = j = 2
while i < (4 or j) > 2:
    i += 1
    j -= 1
    print(i, j)

print('-'*5)

i = j = 2
while i < (4 or j > 2):
    i += 1
    j -= 1
    print(i, j)

print('-'*5)

i = j = 2
while (i < 4) or (j > 2): # Prefered way of doing things...
    i += 1
    j -= 1
    print(i, j)
那么i<4或j>2是如何工作的呢? 比较运算符具有优先级,并且从左到右。i<4,j>2先完成

然后应用逻辑运算符or。 看:不要相信你在网上读到的东西

现在又有一个毛茸茸的大怪物:

使用or运算时,我们是否在左操作数为真时处理右操作数?看起来不像。。。但我没有工具来检查它是否与简单值而不是函数的行为相同

def print_and_return(mah_var):
    print(mah_var)
    return mah_var

value = print_and_return(False) or print_and_return(True)
print('mah value!', value)

print('-'*5)

# Here, the right operand is ignored !
value = print_and_return(True) or print_and_return(False)
print('mah value!', value)

print('-'*5)

# Here, the comparison operand is ignored !
value = print_and_return(True) or print_and_return(True) > print_and_return(True)
print('mah value!', value)
输出:

3 1
4 0
3 1
4 0
-----
3 1
4 0
-----
3 1
4 0
False
True
mah value! True
-----
True
mah value! True
-----
True
mah value! True

因此,首先处理i<4。然后处理or,如果为真,则返回左操作数值,否则返回右操作数值触发i>2的处理。

我穿着睡衣在家,所以我没有工具来检查它,我对理论太累了,但这里躺着一个毛茸茸的大怪物:

它们都给出了与op相同的结果

i = j = 2
while i < (4 or j) > 2:
    i += 1
    j -= 1
    print(i, j)

print('-'*5)

i = j = 2
while i < (4 or j > 2):
    i += 1
    j -= 1
    print(i, j)

print('-'*5)

i = j = 2
while (i < 4) or (j > 2): # Prefered way of doing things...
    i += 1
    j -= 1
    print(i, j)
那么i<4或j>2是如何工作的呢? 比较运算符具有优先级,并且从左到右。i<4,j>2先完成

然后应用逻辑运算符or。 看:不要相信你在网上读到的东西

现在又有一个毛茸茸的大怪物:

使用or运算时,我们是否在左操作数为真时处理右操作数?看起来不像。。。但我没有工具来检查它是否与简单值而不是函数的行为相同

def print_and_return(mah_var):
    print(mah_var)
    return mah_var

value = print_and_return(False) or print_and_return(True)
print('mah value!', value)

print('-'*5)

# Here, the right operand is ignored !
value = print_and_return(True) or print_and_return(False)
print('mah value!', value)

print('-'*5)

# Here, the comparison operand is ignored !
value = print_and_return(True) or print_and_return(True) > print_and_return(True)
print('mah value!', value)
输出:

3 1
4 0
3 1
4 0
-----
3 1
4 0
-----
3 1
4 0
False
True
mah value! True
-----
True
mah value! True
-----
True
mah value! True

因此,首先处理i<4。然后处理or,如果为真,则返回左操作数值,否则返回右操作数值将触发i>2的处理。

在需要了解的情况下对其进行可视化,只有一个条件。条件是一个布尔表达式。你是在问这个布尔表达式是怎么工作的吗?对于这个简单的程序,你可以用笔和纸逐行检查它。记住或写下哪些值有i和j,while条件中的变量是如何检查的,以及它们是如何变化的。条件是一个布尔表达式。你是在问布尔表达式是如何工作的吗?对于这个简单的程序 你可以用笔和纸一行一行地看一遍。只要记住或写下i和j的值,while条件下变量是如何检查的,以及它们是如何变化的。