我最近擅长精益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..!')
谢谢大家的时间......
答案 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
。因此,即使您稍后更改了x
,ab_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..!')