我们如何使用在循环内描述的变量,在python

时间:2018-11-12 15:46:03

标签: python

下面是我的代码。在这里,我试图从输入文件中读取变量gobs(x),然后将其用于其他计算,例如计算error(x)。但是,我发现,我可以在循环内从输入文件中正确读取它,但是当尝试在循环外使用它时,只会传输第一个数据。对于我在循环内读取的所有100个数据,当我在循环外使用它们时,它仅显示最后一个数据的值。

代码从下面开始

constant = 99

x0=50

z0=5

def gsyn (x):

     return (constant*z0)/(z0**2+(x-x0)**2)

with open ('Grav_H_Cyln_v3_output.txt') as finp:

    lines=finp.readlines()

    for line in lines:
        g=float(line)
        x=line
    def gobs (x):
        return g
    print (gobs(x)) # here, gobs(x) is printing properly   

def error(x):

    return (gsyn(x)-gobs(x))


for i in range (1, 100, 1):

    x=i

print (error(x)) # here, only the first value of gobs(x) is coming

print ('stop')

3 个答案:

答案 0 :(得分:1)

对于从根本上来说非常简单的问题,这似乎是一个非常奇怪的解决方案。将gobs用作字典,以便您可以随意设置或检索gobs[x]

gobs = dict()
with open ('Grav_H_Cyln_v3_output.txt') as finp:
    lines=finp.readlines()
    for line in lines:
         g=float(line)
         gobs[line] = g
         print (gobs[line])

答案 1 :(得分:0)

您可以尝试在循环内创建向量gobs[],并在lines上的循环内填充向量。 那应该做。

答案 2 :(得分:0)

而不是在循环的每次迭代中重新分配x,而是将i附加到声明为外部的列表中if块范围。

x = []
for i in range (1, 100, 1):

     x.append(i)

print(x)
相关问题