Python,if语句变麻木了

2024-06-01 04:07:52 发布

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

我正在学习Python,我编写了一个脚本,它搜索包含“关键字”的几行,然后在一个新文件中写入/打印(以前)选定的列表行(我使用第二个参数从列表中选择该行)。你知道吗

一切都很顺利,直到我尝试添加一个语句,以防我选择的列表行大于实际的len(list),然后选择的列表行=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()

Tags: 文件importrenumber列表lensysline
1条回答
网友
1楼 · 发布于 2024-06-01 04:07:52

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

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

if line_select >= len_list:
    line_select = len_list-1

相关问题 更多 >