2016-03-18 3 views
1

Я пытаюсь выполнить поиск по списку слов, содержащих переменную v. Затем, когда найден, напечатайте строку, содержащую переменную. На данный момент он печатает весь список, когда оператор if прав.Python for loop, используя список

v = "g" 
word = ["goodbye","goodmorning","foeach"] 

for s in word: 
    if v in s: 
     print(s) 
else: 
    print("finished") 
+2

Пожалуйста, вы можете уточнить? Для показанного кода, какой результат вы получаете, и какой результат вы хотите получить? –

+4

Я делаю ставку, что вы неправильно скопировали 'print (s)' over, и в вашем исходном коде вы написали 'print (word)' – DaveBensonPhillips

+0

@HumphreyTriscuit: Звучит правдоподобно. –

ответ

1
print('\n'.join(w for w in word if v in w)) 
print('finished') 
+0

Это вообще не отвечает на вопрос: он просто делает то же самое, что и код OP. ОП уже заявил, что этот код не дает желаемых результатов. –

+1

Я неправильно понимаю проблему? Это проходит через строки в списке и печатает только те, которые содержат 'v', в этом случае строку' 'g''. По завершении отпечатки '' завершены''. –

+0

Да, и это именно то, что делает код OP * уже *. Из вопроса ясно, что это не желаемое поведение. Написание ответа, который делает то же самое, используя другой код (не говоря уже о каких-либо объяснениях), не поможет OP. Нам нужно понять, чего действительно хочет ОП. Почему вы думаете, что представить выражение генератора самонадеянному «новичку» без объяснений - это полезная вещь? –