首页 > 解决方案 > 正确的输出,但对于结果中的最后一个元素,但我需要完整迭代的所有结果

问题描述

循环使用公式在字典中运行正常,但仅给出公式成立的最终元素的结果。我需要完整的清单。

我在文本文件中的结果是thulium-167 60.5011675274.

但这是最后一个元素。它应该以 actinium-226 6.478791841364163, 然后 americium-240 76.84481748402972, ..., 开始,直到 thulium-167 60.5011675274

代码如下:

import math

myList=[] 

with open("data_2.txt") as f: 
    for line in f:
        myList.append(tuple(line.rstrip().split()))
dic = {}
for index, ele in enumerate(myList):
    key=index+1
    val_1=str(ele[0])
    val_2=float(ele[1])
    val_3=float(ele[2])
    dic.update({key: (ele[0],val_2,val_3)})
    for i in range(len(dic)):
            power= 5/(val_2)
            P=pow(0.5,power)
            cal_grams=val_3*P
            if cal_grams<100:
                outfile = open("Element_Shortage_List.txt", "w")           
                outfile.write(str(val_1)+ "  "+str(cal_grams)+"\n")
                outfile.close()

当总共应该有 23 个(从循环前的 36 个)时,为什么它只丢掉一个最终正确的结果?

标签: pythondictionary

解决方案


每次以"w"(写入)模式打开文件时,都会从头开始;如果您使用"a"(附加)模式(这是@JeffUK 所提倡的),它将添加到最后。


推荐阅读