2016-05-15 4 views
0

Итак, я создал этот код, чтобы попросить человека ввести предложение. После этого они вводят слово в этом предложении. Тогда выходной код будет позиция, что слово в.Поиск позиции двух слов, которые являются одинаковыми в списке

print("Type a sentence here") 
sentence = input("") 

sentence = sentence.split() 
print("Now type a word in that sentence.") 
word = input('') 

if word in sentence: 
    print("I found",word,"in your sentence.") 
else: 
    print("That word is not in your sentence.") 

print(sentence.index(word)) 

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

ответ

0

Вы можете использовать встроенный enumerate, чтобы связать каждое слово в своем списке sentence с соответствующим положением. Затем используйте понимание списка, чтобы получить каждое вхождение слова в списке.

print([i for i, j in enumerate(sentence) if j == word]) 

Некоторые дополнительные соображения бы, что может быть, вы хотите преобразовать ваше предложение в нижний регистр и удалить знаки препинания, прежде чем пытаться соответствовать ваше слово, так что собственно пунктуация и капитализация не будет подножку ваш соответствующий. Кроме того, вам не нужен '' в input(), чтобы он был действительным - пустой input() без подсказки в порядке.

+0

Это хорошо работает. Спасибо. – Jake

0

Этот рь решается этим скриптом:

import re 
print("Type a sentence here") 
sentence = raw_input("") 
print("Now type a word in that sentence.") 

word = raw_input('') 
words = re.sub("[^\w]", " ", sentence).split() # using re 


position = 1 
list_pos = [] 
for w in words : 
    if w == word: 
     print position 
     list_pos.append(position) 
    position += 1 
if list_pos: 
    print("I found",word,"in your sentence.") 
else: 
    print("That word is not in your sentence.") 
print list_pos 
Смежные вопросы