python while循环迭代

python while循环迭代,python,while-loop,Python,While Loop,我想运行一个while循环,其中两个条件值都将在一个循环中生成。有人能建议我怎么做吗?如果我使用一个已知的值(比如计算的_std=5)运行它,那么它工作正常。谢谢 test_energy = [] calculated_std = float('inf') absolute_avg = float('inf') x = 1 while absolute_avg > calculated_std: for i in range(x,x+10): energy = system.en

我想运行一个while循环,其中两个条件值都将在一个循环中生成。有人能建议我怎么做吗?如果我使用一个已知的值(比如计算的_std=5)运行它,那么它工作正常。谢谢

test_energy = []
calculated_std = float('inf')
absolute_avg = float('inf')
x = 1
while absolute_avg > calculated_std:
 for i in range(x,x+10):
    energy = system.energy().value()
    print(energy)
    test_energy.append(energy)
    std = AverageAndStddev()
    A = sum(test_energy[-10:-5])/5
    B = sum(test_energy[-5:])/5
    absolute_avg = abs(A - B)
    std.accumulate(A)
    std.accumulate(B)
    avg = std.average()
    calculated_std = std.standardError()
    x = x+1

您的
while
循环从未执行,因为

while absolute_avg > calculated_std:
    ...
他从不满足。实际上
绝对值\u平均值==计算值\u标准值。

似乎没有理由不能将
absolute\u avg
computed\u std
实例化为值,以便它们在
循环的第一次循环中成功

说:

作为一个更干净的解决方案,您可以实现do-while循环,以确保循环至少运行一次,如下所示:

test_energy = []
calculated_std = float('inf')
absolute_avg = float('inf')
x = 1
while True:
 for i in range(x,x+10):
    energy = system.energy().value()
    print(energy)
    test_energy.append(energy)
    std = AverageAndStddev()
    A = sum(test_energy[-10:-5])/5
    B = sum(test_energy[-5:])/5
    absolute_avg = abs(A - B)
    std.accumulate(A)
    std.accumulate(B)
    avg = std.average()
    calculated_std = std.standardError()
    x = x+1
  if absolute_avg > calculated_std:
    break

现在还不清楚你到底在问什么(而absolute_avg>calculated_std:)语句我设置了absolute_avg和calculated_std未知的条件。因为这些变量是未知的,所以我把它们写成float('inf'),但print(computed_std)给了我inf,而loop并没有给我任何结果。你明白了吗?你期望得到什么结果?我有两个集合,每个集合有5个值,我想知道它们是否足够相似以停止模拟。我知道,但你会看到上面的代码的行为类似于一个。我正在运行这个。如果出了什么事,我会抓住你的。thanks@MuhammadSajidIqbal如果答案对您有价值,请接受。我正在进行测试和计算。谢谢
test_energy = []
calculated_std = float('inf')
absolute_avg = float('inf')
x = 1
while True:
 for i in range(x,x+10):
    energy = system.energy().value()
    print(energy)
    test_energy.append(energy)
    std = AverageAndStddev()
    A = sum(test_energy[-10:-5])/5
    B = sum(test_energy[-5:])/5
    absolute_avg = abs(A - B)
    std.accumulate(A)
    std.accumulate(B)
    avg = std.average()
    calculated_std = std.standardError()
    x = x+1
  if absolute_avg > calculated_std:
    break