Хранение списка слов, возвращающее «строковый индекс вне диапазона».Зачем? - PullRequest
0 голосов
/ 20 октября 2018

Я работаю над заданием, в котором мы должны попросить пользователя ввести слово, а затем, если в слове есть буква, которая повторяет начальную букву в слове, например: ApplesAuce (повторение A), программа выполнитсохранить слово в списке, а затем распечатать список, когда пользователь закончит вводить слова.

Я получаю эту ошибку

если слово [0] .lower () вword [1:]. lower (): IndexError: индекс строки вне диапазона

Вот мой код:

wordlist = [] 
word = input("Please enter a hilariously long word: ")
# I said "hilariously long" to increase the likelihood of a repeat letter
while wordlist != '':
    word = input("Please enter another hilariously long word: ")
    if word[0].lower() in word[1:].lower():
        wordlist.append(word) 

word = input("Please enter another hilariously long word: ")

print("All of the words that had repeated first letters are: ")
print(wordlist)

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Это должно сработать. Я ввел прерыватель, который завершен или завершен, нарушит цикл.Я также переместил ваш первый ввод внутрь, который добавит еще один, если заполнен список слов.

wordlist = [] 
# I said "hilariously long" to increase the likelihood of a repeat letter
while 1:
    word = input("Please enter {}hilariously long word: ".format('another ' if wordlist else ''))

    # get out if done or quit is typed
    if word in ('done','quit'):
        break
    if word[0].lower() in word[1:].lower():
        wordlist.append(word) 

print("All of the words that had repeated first letters are: ")
print(wordlist)
0 голосов
/ 20 октября 2018

Проверить наличие слова и выйти из цикла while, если его там нет.

wordlist = []
msg = "Please enter a hilariously long word: "
# I said "hilariously long" to increase the likelihood of a repeat letter
while True:
    word = input(msg)
    if word:
        if word[0].lower() in word[1:].lower():
            wordlist.append(word)
    else:
        break

print("All of the words that had repeated first letters are: ")
print(wordlist)

Обратите также внимание, что wordlist - это list, поэтому проверка while wordlist != "" всегда будет иметь место, потому что list не является string

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...