我想运行一个while循环,其中两个条件值将在循环中生成。任何人都可以建议我如何制作它?如果我用一个已知的(比如calculated_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
答案 0 :(得分:0)
您的while
循环永远不会执行,因为
while absolute_avg > calculated_std:
...
永远不会满足。事实上absolute_avg == calculated_std.
似乎没有理由不能将absolute_avg
和calculated_std
实例化为值,以便它们在while
循环的第一次传递时成功。
说:
calculated_std = 0.0
absolute_avg = 1.0
也许是一个更清洁的解决方案,你可以实现一个do-while-esque循环,以确保循环至少运行一次,如下所示:
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