嵌套的if语句仅返回else语句,除非选择了第一个值|蟒蛇

时间:2020-02-05 17:33:47

标签: python python-3.x if-statement nested-loops

我正在做一个分配,并且一切正常,除了我的最终if / else语句默认为else块,除非我输入要尝试检查的第一个值,而且我认为我理解原因,但我想不到防止它的方法。但是,当我在没有else块的情况下运行程序时,输出就很好了。

输入文件:

LE1 Leicester
LE2 Oadby,Knighton,Highfields,Aylestone
LE3 Braunstone,Glenfield,Groby Road
LE4 BeaumontLeys,Belgrave,Birstall,Thurmaston
LE5 Hamilton,ThurnbyLodge,Evington

代码:

def area3(filename):
    f = open(filename, "r")
    aList = list()
    bList = list()

    for line in f:
        line = line.strip()
        f = line.split("\t")
        aList.append(f)

    for line in aList:
        for i in line[1:]:
            i = i.split(",")
            bList.append(i)

    for i in range(0, len(aList)):
        del aList[i][1]
        aList[i].append(bList[i])

    for j in aList:
        for x in j[1]:
            print(j[0], x)
    print("")

    x = input("Enter the name of the suburb to get its postcode: ")
    x = x.capitalize()

    for i in aList:
        for j in i[1]:
            if x == j:
                return "The postcode is: " + i[0]
            else:
                return "Not Found"

print(area3(input("Input filename: ")))

带有else块的输出:

Input filename: postcode.txt
LE1 Leicester
LE2 Oadby
LE2 Knighton
LE2 Highfields
LE2 Aylestone
LE3 Braunstone
LE3 Glenfield
LE3 Groby Road
LE4 BeaumontLeys
LE4 Belgrave
LE4 Birstall
LE4 Thurmaston
LE5 Hamilton
LE5 ThurnbyLodge
LE5 Evington

Enter the name of the suburb to get its postcode: evington
Not Found

不包含else块的输出:

Input filename: postcode.txt
LE1 Leicester
LE2 Oadby
LE2 Knighton
LE2 Highfields
LE2 Aylestone
LE3 Braunstone
LE3 Glenfield
LE3 Groby Road
LE4 BeaumontLeys
LE4 Belgrave
LE4 Birstall
LE4 Thurmaston
LE5 Hamilton
LE5 ThurnbyLodge
LE5 Evington

Enter the name of the suburb to get its postcode: evington
The postcode is: LE5

任何帮助解决此问题的方法将不胜感激。

1 个答案:

答案 0 :(得分:1)

将最后一部分更改为,以便仅在完全迭代列表之后返回“找不到”。

for i in aList:
        for j in i[1]:
            if x == j:
                return "The postcode is: " + i[0]

return "Not Found"