if / elif在python 2.7中没有按预期工作

时间:2016-12-15 19:13:17

标签: python python-2.7

我有这段代码

print "Choose a category: Animals, Jobs or Cars?"
while True:
    cat = str(raw_input())
    if cat.lower() == "animals":
        wordfile = open("Animals.txt")
        break
    elif cat.lower == "jobs":
        wordfile = open("Jobs.txt")
        break
    elif cat.lower == "cars":
        wordfile = open("Cars.txt")
        break
    else:
        print "That's not a valid category!"

wordlist = [line.split("\n") for line in wordfile]
print wordlist

当我进入动物时,它完美地运作并打印我文件的内容。然而,当我进入工作岗位或汽车时,它告诉我这不是一个有效的类别(它会跳过elif&s直到其他地方)并且我无法弄清楚原因。

2 个答案:

答案 0 :(得分:1)

因为您需要在所有案例中使用cat.lower()

print "Choose a category: Animals, Jobs or Cars?"
while True:
    cat = str(raw_input())
    if cat.lower() == "animals":
        wordfile = open("Animals.txt")
        break
    elif cat.lower() == "jobs":
        wordfile = open("Jobs.txt")
        break
    elif cat.lower() == "cars":
        wordfile = open("Cars.txt")
        break
    else:
        print "That's not a valid category!"

wordlist = [line.split("\n") for line in wordfile]
print wordlist

使用cat.lower实际上不会执行小写函数,而是会给你一个对实际函数本身的引用,这会搞乱if / elif语句

答案 1 :(得分:1)

您在第二个和第三个()中遗失了elif。将函数与字符串进行比较将产生False。