Python: застрял в гласной индексации - PullRequest
1 голос
/ 26 февраля 2020

Итак, я готовлюсь к промежуточному экзамену и выполняю упражнения из книги в формате pdf, я столкнулся с этим упражнением:

«Напишите код, который для строки печатает индексы всех ее гласных (a, e , i, o и u). Это можно сделать с помощью a для l oop или некоторого времени l oop. "

Дано: s =" А теперь для чего-то совершенно другого "

Я кодировал это:

for j in s:
    for i in range(len(s)):
         if s[i] == "a" or s[i] =="e" or s[i] == "i" or s[i] == "o" or s[i] == "u":
              print (j[i])

И я получаю ошибку: «строковый индекс выходит за пределы диапазона»

Я попробовал это, потому что я использовал его в другом упражнении, аналогичном тому, которое запрашивалось для там работал индекс общей буквы между двумя строками, но сейчас я не понимаю, почему не работает. Буду признателен, если вы объясните мне, как я должен смотреть на упражнение. Спасибо!

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

вы можете использовать набор для хранения гласной, сложность времени для поиска в наборе O (1)

vowel = {'a', 'e', 'i', 'o', 'u'}

for i, e in enumerate(s):
    if e in vowel:
        print(i)
1 голос
/ 26 февраля 2020

В вашем коде s кажется списком строк. Каждая обрабатываемая вами строка будет находиться в переменной j, поэтому при использовании len(s) и s[...] индексируется список s, а не символы строки j. Поскольку вы были последовательны в этой ошибке вплоть до последней строки (print(j[i])), именно в этой строке обнаружена ошибка, но проблема фактически заключается в каждой другой ссылке на s вместо j

Кстати, вам не нужен набор. Вы можете просто использовать оператор in для обычных строк. Для небольшого количества предметов это может дать достаточную производительность при использовании базовых c инструментов, которые вы уже изучили:

for j in s:
    for i in range(len(j)):
        if j[i] in "aeiou":
            print(i,j[i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...