编辑
在我编写的这段代码analysis.py中,变量entropy是一列数据。
当我将所有行传递给一个循环时,只考虑最后一个值:
要运行此代码,只需在文件夹中使用两个文件:
pressure_enthalpy_all_points.dat:
# pressure enthalpy
2 3
5 4
3.5 2entropies_parsed.dat:
# entropies
0.5
0.2
0.47 Code analysis.py包含了注释中的嵌套循环:
import numpy as np
pressure_gibbs = open('pressure_gibbs_all_points.dat', 'w')
pressure_gibbs.write('#pressure gibbs\n')
## FUNCTION:
def G(H,S):
# G = H - TS
# Then:
gibbs = H - 298.15 * S/4.0
return gibbs
with open('entropies_parsed.dat') as entropies_parsed, open('pressure_enthalpy_all_points.dat') as enthalpy_pressure: # open the file
entropies_parsed.next() # skip the first line
enthalpy_pressure.next()
for line in entropies_parsed: # iterate over the remaining lines
entropy = float(line)
for line in enthalpy_pressure:
pressure, enthalpy = [float(n) for n in line.split()]
gibbs = G(enthalpy, entropy)
pressure_gibbs.write('{}\t{}\n'.format (pressure, gibbs))
pressure_gibbs.close()这给出了一个文件,pressure_gibbs_all_points.dat
#pressure gibbs
2.0 -34.26875
5.0 -33.26875
3.5 -35.26875该gibbs = -34.26875是生成3 -298.15 * 0.5 / 4.0的结果,其中:3 = pressure (第一行pressure_enthalpy_all_points.dat文件)和0.5 = entropy (第一行entropies_parsed.dat)
显然这是错误的..。所有gibbs行都具有相同的值,因为pressure_gibbs_all_points.dat的第2行和第3行是从pressure_enthalpy_all_points.dat的第一行和第一行entropies_parsed.dat生成的。
我看不出问题在哪里,n第四行gibbs应该从pressure_gibbs_all_points.dat和pressure_enthalpy_all_points.dat的n第四行生成
发布于 2016-06-28 10:13:29
循环中存在一个问题,.First循环将得到完全执行,然后熵变量将保存文件中的最终值。所以当你进入第二个循环并打印它时,你只能看到熵的最后一个条目。我想你是想在那里写一个嵌套循环!
https://stackoverflow.com/questions/38073204
复制相似问题