学习Python - 在循环

时间:2017-01-27 13:36:41

标签: python

我最近擅长精益python而且我遇到了这个问题,我不明白为什么它不按预期工作......

a = 2
b = 2

c = 6
x = 2

ab_cx = a == b and c == x

while x < 8:
    x += 1
    if ab_cx:
        print('Eureka')
    else:
        print(x, ' - No... Not there yet..!')

在我的脑海中,一旦x变为6,就应该打印Eureka!但这不是我得到的......

但是,如果我只是写这个......那么==就像我认为他们应该......那有什么不同。??

a = 2
b = 2

c = 6
x = 6

ab_cx = a == b and c == x


if ab_cx:
    print('Eureka')
else:
    print('Not there yet..!')

谢谢大家的时间......

7 个答案:

答案 0 :(得分:2)

声明:

ab_cx = a == b and c == x

不在ab_cx中存储语句。相反,它会评估a==b and c==x并将结果存储在ab_cx中 在您的情况下,false

答案 1 :(得分:2)

问题在于

ab_cx = a == b and c == x

在进入循环之前只计算一次,它取值False。因此,即使您稍后更改了xab_cx的值也不会更改。您可以在循环内部写入行以​​获得预期的结果。

a = 2
b = 2

c = 6
x = 2

while x < 8:
    x += 1
    ab_cx = a == b and c == x
    if ab_cx:
        print('Eureka')
    else:
        print(x, ' - No... Not there yet..!')

答案 2 :(得分:1)

ab_cx = a == b and c == x行写入while循环。

答案 3 :(得分:1)

你永远不会更新ab_cx,这是在条件中评估为真/假的,你只是在评估了ab_cx之后更新x

答案 4 :(得分:1)

你的&#34; ab_cx&#34;不是一种方法,而是一种价值。

你可以制作一个方法,或者在你的while循环中重复ab_cx = a == b和c == x。

答案 5 :(得分:1)

正如Jay建议在while循环中写条件:

a = 2
b = 2

c = 6
x = 2

while x < 8:
    x += 1
    if (a == b and c == x):
        print('Eureka')
    else:
        print(x, ' - No... Not there yet..!')

您无法将条件保存在&#34; ab_cx&#34;中。 &#34; ab_cx&#34;已被评估

优于while循环是for循环:

a = 2
b = 2

c = 6
x = 2

for x in range(2, 8 + 1):
    if (a == b and c == x):
        print('Eureka')
    else:
        print(x, ' - No... Not there yet..!')

for循环通常比while循环更快,并且构建无限循环比使用while循环更难。

请注意(8 + 1),这是必要的!

詹姆斯。

答案 6 :(得分:0)

您在循环之前定义变量ab_cx,此时它取值False并且类型为bool

这是一个静态分配,这个值不会改变,直到你要求python改变它。

因此,您的变量始终等于False

如果您希望程序正常工作,您可以在每次迭代时更改值:

a = 2

b = 2

c = 6
x = 2



while x < 8:
    x += 1
    ab_cx = a == b and c == x
    if ab_cx:
        print('Eureka')
    else:
        print(x, ' - No... Not there yet..!')

或将其定义为函数:

a = 2

b = 2

c = 6
x = 2
def ab_cx(a,b,c,x): return a == b and c == x

while x < 8:
    x += 1

    if ab_cx(a,b,c,x):
        print('Eureka')
    else:
        print(x, ' - No... Not there yet..!')