2015-12-07 2 views
-2

Цель моего кода - ввести строку от пользователя и превратиться в список, не учитывающий регистр. Затем мне нужно взять вторую строку от пользователя, а затем вывести позицию второй данной строки. Это мой код:Как отлаживать мой код Python?

UserSentence = input('Enter your chosen sentence: ') #this is where the user inputs their sentence 
from string import punctuation #this 'fetches' the punctuation from the string 
tbl=str.maketrans({ord(ch):" " for ch in punctuation}) 
UserSentence = UserSentence.lower().translate(tbl).split()#.split() turns the input sentence into a list,... 
#...this will help to identify where a word appears... 
#...in the sentence. The .lower() also turns the... 
#...string into lowercase so it is not case sensitive. 
UserWord = input('Enter a word from the sentence: ')#this is where the user inputs their word from the sentence 
UserWord = UserWord.lower()#.lower() is used to make UserWord not case sensitive 
for i in range(len(UserSentence)): 
    if UserSentence (i) == UserWord: 
     print ('Your chosen word appears in: ') 
+2

"Нужна помощь отладки мой код пожалуйста" - Расскажите нам, что случилось. – hlt

+0

Голосование, чтобы закрыть как не MCVE. – halfer

ответ

1

Для индекса последовательности нужно использовать []

if UserSentence[i] == UserWord: 

Если вы пытаетесь найти какой индекс (словесным) их слово вы можете сделать

if UserWord in UserSentence: 
    print('Your word is located at {}'.format(UserSentence.index(UserWord))) 

Или аналогично

try: 
    print('Your word is located at {}'.format(UserSentence.index(UserWord))) 
except ValueError: 
    print('Your word is not in the sentence') 
0

Пара ошибок здесь:

  1. Если вы используете Python 2, используйте raw_input для строк. В Python 3 input в порядке.
  2. Ваш maketrans звонок is weird
  3. Для поиска, если слово находится внутри списка, у вас нет никаких циклов или собственных сравнений. Python может это сделать для вас.
  4. Прилагается к PEP0008. Он рассказывает вам, как вы должны форматировать свой код, чтобы его было легче читать.

Ваш переписан и проверенный код:

from string import punctuation, maketrans 

user_sentence = raw_input('Enter a sentence: ') 
trans = maketrans("", "") 
user_sentence = user_sentence.lower().translate(trans, punctuation).split() 
user_word = raw_input('Enter a word from the sentence: ') 
user_word = user_word.lower() 
if user_word in user_sentence: 
    print ('Your chosen word appears in the sentence.') 
+1

* «Использовать raw_input для строк». * Нет, начиная с Python 3.x, это верно только в 2.x – CoryKramer

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