2“if”条件执行函数2x

2024-09-30 22:25:33 发布

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

我下面的代码将列出一个目录中的所有文件,每个文件都有自己的编号。然后它要求用户通过选择相应的数字来选择一个文件。它应该返回一个至少包含一个文件名的列表。例如

['file1.xvg']

问题是,即使用户输入了一个数字,提示也会再次出现。再次输入相同的数字后,程序终止。你知道吗

#function to determine data files to process
def file_names():
    print ""
    print "Choose file(s) to analyze:"
    print ""
    #display available files in the current directory
    f = filter((lambda x: x.endswith(".xvg")),os.listdir(os.curdir))
    for i in f:
        print "       %s ----- %s"%(str(f.index(i)+1),i)
    file_set = [] #list of data files
    x = (raw_input("Enter file index(es), separated with spaces: ")).split()
    for i in x:
        file_set.append(f[int(i)-1])
    print "igiveup"
    print file_set

    return file_set


if file_names() == ['file1.xvg']:
    print "icantdo"


if file_names() == ['file2.xvg']:
    print "thisanymore" 

当我执行这段代码时,当它要求我输入一个输入,我给它“1”,它对应于file1.xvg,这就是终端上显示的内容:

igiveup

[file1.xvg]

icantdo

然后它又提示我一次,当我再次回答“1”时,下面是出现的内容:

igiveup

[file1.xvg]

如何确保只提示用户输入一次?你知道吗


Tags: 文件to代码用户indatanames数字
1条回答
网友
1楼 · 发布于 2024-09-30 22:25:33

您将调用函数两次,这就是为什么它会导致两个输入提示。解决这个问题的正确方法是改变

if file_names() == ['file1.xvg']:
    print "icantdo"

if file_names() == ['file2.xvg']:
    print "thisanymore" 

为了这个

result = file_names()

if result == ['file1.xvg']:
    print "icantdo"

if result == ['file2.xvg']:
    print "thisanymore"

相关问题 更多 >