Python,if语句来改变一个数字

时间:2012-11-15 17:49:31

标签: python

我正在学习Python,我制作了一个脚本,搜索包含“关键字”的几行,然后在新文件中写入/打印(先前)选择的列表行(我使用第二个参数来选择列表中的一行)。

一切顺利,直到我尝试添加语句,以防我选择的列表行是>比实际的len(列表)然后选择list_line = len(list);无论出于何种原因,它都不起作用。

任何人都可以指出它为什么不起作用,这是我的剧本。万分感谢您的帮助。 (这里是a link,其中包含我用作输入的文件示例)

    import sys
    import re

    filename = sys.argv[1]
    line_select = int(sys.argv[2])


    newfile = str(filename) + ".3d"

    openold = open(filename,"r")
    opennew = open(newfile,"w")

    rline = openold.readlines()

    energies = []

    line_number = 0

    for line in rline:
        line_number += 1
        if re.search( r"SCF Done", line ):
            words = line.split()
            energy = float( words[4] )
            energies.append(str(line_number) + " : " + "The energy of the molecule is %f kcal mol-1" % energy)

    len_list = len(energies)

    if line_select > len_list:
        line_select = len_list

    print >>opennew, energies[line_select]

    openold.close()
    opennew.close()

1 个答案:

答案 0 :(得分:4)

energies列表的最后一个元素实际上是energies[len_list-1],因为Python索引从0开始。

因此,如果您要打印“energies的最后一个元素”,则需要将line_select初始化为小于列表长度的一个:

if line_select >= len_list:
    line_select = len_list-1