2016-11-08 4 views
0

Мой код принимает предложение и находит данное слово в этом предложении.Нужна помощь при анализе предложения

Если слово в предложении он должен сказать, что он нашел слово и какие позиции сказал слово в.

Если слово не в предложении оно должно отображаться сообщение об ошибке.

У меня есть это:

print("Please insert your sentence without punctuation") 
sentence=(input()) 
variable1='sentence' 
print("Which word would you like to find in your sentence?") 
word=input() 
variable2='word' 
if 'word'=='COUNTRY': 
    'variable3'==5 
    'variable4'==17 
if word in sentence: 
    print([word], "is in positions", [variable3], "and", [variable4]); 
else: 
    print("Your word is not in the sentence!") 
+0

Когда вы ожидаете ' 'слово' == 'COUNTRY'', чтобы быть правдой? Вы имели в виду 'if word == 'COUNTRY''? – doctorlove

+2

Это звучит как сложная задача за такой короткий промежуток времени. –

+0

этот код абсолютно бесполезен. вы когда-нибудь запускали этот код? не могли бы вы рассказать нам, какая часть этого кода не работает и каким образом? – pt12lol

ответ

0

Python последовательность обеспечивает метод index. Он дает вам индекс элемента или вызывает ошибку, если элемент не находится в последовательности. В строках он позволяет находить подстроки.

>>> 'hello world'.index('world') 
6 
>>> 'hello world'.index('word') 
ValueError: substring not found 

В принципе, вы должны добавить ввод для предложения и слова для поиска. Вот и все.

print("Insert sentence without punctuation...") 
sentence=input() # get input, store it to name `sentence` 
print("Insert word to find...") 
word=input() 
try: 
    idx = sentence.index(word) 
except ValueError: # so it wasn't in the sentence after all... 
    print('Word', word, 'not in sentence', repr(sentence)) 
else: # if we get here, IndexError was NOT thrown 
    print('Word', word, 'first occurs at position', idx) 

Здесь есть некоторые оговорки, например, «fooworldbar» также будет соответствовать. Правильное обращение с такими вещами зависит от того, что именно нужно. Я предполагаю, что вы действительно хотите слово позиций.


Если вам нужны позиции в значении «в n го слова», вы должны преобразовать фразу в список слов. str.split делает. Затем вы можете снова работать с index. Кроме того, если вы хотите все позиции, вы должны позвонить в индекс повторно.

print("Insert sentence without punctuation...") 
sentence = input() # get input, store it to name `sentence` 
words = sentence.split() # split at whitespace, creating a list of words 
print("Insert word to find...") 
word=input() 
positions, idx = [], -1 
while idx < len(words): 
    try: 
     idx = words.index(word, idx+1) 
    except ValueError: # so it wasn't in the rest of the sentence after all... 
     break 
    else: # if we get here, IndexError was NOT thrown 
     positions.append(idx) # store the index to list of positions 
# if we are here, we have searched through the whole string 
if positions: # positions is not an empty list, so we have found some 
    print('Word', word, 'appears at positions', ', '.join(str(pos) for pos in positions)) 
else: 
    print('Word', word, 'is not in the sentence') 
0

Я хочу иметь дело с некоторыми недоразумениями в представленном коде.

Во-первых,

print("Please insert your sentence without punctuation") 
sentence=(input()) 

проще, так как

sentence = input("Please insert your sentence without punctuation") 

Теперь у меня есть переменная называется sentence wihich не должны быть запутаны строкой 'sentence'

Точно так же можно сказать,

word = input("Which word would you like to find in your sentence?") 

дает еще одну переменную word снова не быть запутаны со строкой 'word'

Предположим, ради аргумента мы имеем,

sentence = "Has this got an elephant in?" 

и ищем слово 'elephant'

Опубликованная код попытки использовать in, но это произойдет:

>>> "elephant" in sentence 
True 
>>> "ele" in sentence 
True 
>>> "giraffe" in sentence 
False 
>>> 

Закрыть. Но не достаточно близко. Он не ищет целого слова, так как мы нашли 'ele' в 'elephant'.

Если вы указали предложение на слова, как предложено другим ответом, вы можете найти целые слова и найти позицию. (Посмотрите раскол, вы можете выбрать другие символы, чем по умолчанию ' ').

words = sentence.split() 
word = 'ele' 
words.index(word) 

Если слово не существует, вы получите сообщение об ошибке:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ValueError: 'ele' is not in list 

Я оставлю обработку ошибок для вас.

0

Вы можете использовать модуль Re:

import re 

sentence = input('Sentence: ') 
word = input('Word: ') 

## convert word in regular expression for search method. 
regex_word = r'(' + word + ')(?=\s|$)' 

## initialize search var. 
search = re.search(regex_word, sentence) 

if search: 
    while search: 
     match_pos = search.span() 
     sentence = sentence[:match_pos[0]] + sentence[match_pos[1]:] 

     print(word + ' is in position ' + str(match_pos[0])) 
     search = re.search(regex_word, sentence) 
else: 
    print(word + ' is not present in this sentence') 
Смежные вопросы