2"如果"条件执行函数2x

时间:2018-04-05 04:07:46

标签: 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]

如何确保仅提示用户输入一次?

1 个答案:

答案 0 :(得分:1)

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

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"