2016-05-25 4 views
-6

Здравствуйте, поэтому мне нужно сделать программу, которая идентифицирует все позиции, где слово встречается в списке, но когда я запускаю свою программу, ничего не выводит. Вот мой код:Python Найти слово в списке

sentence =("ASK NOT WHAT YOUR CONTRY CAN DO FOR ASK WHAT YOU CAN DO FOR YOUR CONTRY") #This is a list 
print (sentence) 
text = input("Choose a word from the sentence above")#this prints out some text with an input 
sentence = sentence.split(" ")# This splits the list 
text = text.upper()# this makes the text in capital letters 
def lookfor(): 
    if text in sentence: 
     for i in sentence: 
      value = sentence.index(sentence) 
      print ("Your word has been found in the sentence at the position", value + "and", value) 


     else: 
      print ("The word that you have typed is not found in the sentence.") 

Спасибо

+1

Вы рассматривали вызов вашей функции? – timgeb

+6

Или Googling для десятков других людей, обманывающих одну и ту же домашнюю работу? – jonrsharpe

+0

и просто для уточнения, ваша переменная предложения на самом деле является кортежем, а не списком – glls

ответ

2

Чтобы ответить на ваши вопросы, ничего не происходит, потому что вы не вызывая функцию.

Там очень много работы, остающейся на функции, но вот несколько общих советов:

1) Индекс находит только первый экземпляр элемента в списке

2) Вы не можете быть что слово в вашем предложении ровно дважды

3) Используйте имена описательных переменных. Например, for word in sentence делает намного больше смысла, интуитивно

0

Вы можете сделать что-то вроде этого:

sentence =("ASK NOT WHAT YOUR CONTRY CAN DO FOR ASK WHAT YOU CAN DO FOR YOUR CONTRY") #This is a list 
print (sentence) 
text = raw_input("Choose a word from the sentence above: ")#this prints out some text with an input 
sentence = sentence.split(" ")# This splits the list 

text = text.upper()# this makes the text in capital letters 
def lookfor (text): 
    indexes = [ idx+1 for word, idx in zip(sentence, range(0,len(sentence))) if text == word ] 
    print ("Your word has been found in the sentence at these positions", indexes) 

    if not indexes: 
     print ("The word that you have typed is not found in the sentence.") 

lookfor(text) 

Пример:

ASK NOT WHAT YOUR CONTRY CAN DO FOR ASK WHAT YOU CAN DO FOR YOUR CONTRY 
Choose a word from the sentence above: for 
('Your word has been found in the sentence at these positions', [8, 14]) 
+0

Большое вам спасибо! У меня есть еще один вопрос, можете ли вы объяснить мне, что делает эта линия? indexes = [idx + 1 для слова, idx в zip (предложение, диапазон (0, len (предложение))) – tom3883

+0

это называется «понимание списка» в python, оно создает список индексов, каждый из которых соответствует положению каждого слово в «предложениях» и добавляет его в список только в том случае, если он соответствует введенному тексту – YOBA

+0

Получил, спасибо – tom3883

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