循环一次给我一个值,并希望它给我一个值列表,以便在绘图后使用它们

2024-09-28 17:05:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的(我猜?)这里有个问题。你知道吗

我正在编写一个代码,它允许我从一个txt文件中提取数据并对其进行一些计算,然后绘制结果。你知道吗

我已经成功地构建了代码的主要部分,这里唯一的问题是我在if循环之后得到的结果不是列表形式的,错误消息是:

TypeError:zip参数#2必须支持迭代

那我做错什么了?谢谢你的帮助。你知道吗

这是密码

import math
import matplotlib.pyplot as plt # To import the matplotlib library

def Calcul_Lux(Aperture,Shutter,Speed):
    x=math.pow(Aperture,2)/(Shutter/Speed)
    IL=math.log(x,2)
    lux = math.pow(2,IL) * 2.5
    return lux    

data='/home/stagiaire/Bureau/data0030.txt'
with open(data) as f:
     lines = f.readlines()

for z in lines:
    if z.find("Aperture") >= 0:  
       Aperture=z.split()[-1]
    elif z.find("Shutter Speed") >=0:
        t2=z.split()[-1]
        t3=t2.split("/")
        Shu=t3[0]
        Shutter=float(Shu)
        Spe=t3[1]
        Speed=float(Spe)

tuples = zip(Aperture, Shutter, Speed)
output = map(lambda tup: Calcul_Lux(tup[0], tup[1], tup[2]), tuples)
print(output)

#plt.plot(output, 'ro')# To draw the points from the output
plt.plot(range(len(output)), output, 'ro') 

plt.axhline(y=48000) # la ligne de comparaison 48.000 lux
plt.show()

目标是:我必须从循环接收光圈,快门,和速度valeus,因为它现在是但所有的txt行,而不是只有一行。再次感谢你的帮助。你知道吗

这里可以看到txt文件。你知道吗

编辑:

所以问题是,我没有定义空列表,而是将结果附加到其中,我编辑了我的初始问题,这样就可以帮助新手。你知道吗


Tags: 文件the代码importtxtoutputpltmath
1条回答
网友
1楼 · 发布于 2024-09-28 17:05:53

好的,正如注释已经提到的,您的循环没有存储任何值。这意味着每次运行循环时,在循环中定义的所有变量都只会将其关联值保留在该特定循环中。你知道吗

诀窍是将数据存储在列表、字典或其他Python Data Structures中。你知道吗

既然你提到你希望结果存储在一个列表中,我猜你是在寻找这样的东西:

aperture_list = []
shutter_list = []
speed_list = [] 
for z in lines:
    if z.find("Aperture") >= 0:  
       aperture_list.append(z.split()[-1])
    elif z.find("Shutter Speed") >=0:
        t2=z.split()[-1]
        t3=t2.split("/")
        Shu=t3[0]
        shutter_list.append(float(Shu))
        Spe=t3[1]
        speed_list.append(float(Spe))
tuples = zip(aperture_list, shutter_list, speed_list)

相关问题 更多 >