2016-12-15 3 views
0

У меня есть этот кодесли/Элиф не работает, как ожидалось в 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 и идет прямо к другому), и я не могу понять, почему.

+4

У вас отсутствует скобка на 'cat.lower' в ваших операторах' elif' – LMc

+2

Кроме того, почему use'cat = str (raw_input())?? 'raw_input()' сам вернет строку. –

ответ

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

Ваш недостающий () во втором и третьем elif s. Сравнение функции со строкой даст False.

+0

действительно этот вопрос нужен ответ? –

+1

Я не осуждаю, но у вас может быть точка. Кроме того, кто-то, по-видимому, постоянно наращивает материал без разбора. – kabanus

Смежные вопросы