Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Операция со строками, поиск слов с окончанием на определённую букву python

#python_3x


Сам не так давно начал питон, немного не понимаю почему он не ищет мне слова и вообще
ничего не выводит. 

Задание такое: Дан набор слов, разделенных точкой с запятой (;). Набор заканчивается
двоеточием (:). Определить, сколько в нем слов, заканчивающихся буквой а.

Мой код, помогите доделать до конца)

string = "Добро;Зло;Земля;Игра;Машина:"
i = 0
k = 0
while i == 1:
    len(string) - 1
    if string[i]== "а" and string[i+1] == ";" or string[i+1] == ":":
        k=k+1
        print(k)


Вроде уже лучше стало, но результат не совсем правильный вроде

string = "Добро;Зло;Земля;Игра;Машина;Куша:"
i = 0
k = 0
for i in range(len(string)-1):
    if string[i] == "а" and string[i+1] == ";" or string[i+1] == ":":
        k = k+1

print(k)

    


Ответы

Ответ 1



string = "Добро;Зло;Земля;Игра;Машина:" words = [] i = 0 #счётчик для обхода входной строки while i < len(string) and string[i] != ":": #проходим, пока не дойдём до знака конца word = "" #временная переменная для заполнения слова while i < len(string) and string[i] != ";" and string[i] != ":": #заполняем слово, пока не встретим знак конца слова (или всего ввода) word += string[i] i = i + 1 words.append(word) #когда встретим знак конца слова, выйдем из цикла и занесём завершённое слово в массив i = i + 1 #игнорируем ";" k = 0 for word in words: if word[len(word)-1] == 'а': k = k + 1 print(k) Проверка на len(string), чтобы не вылететь за пределы массива. Возможно есть решение элегантнее, но на больную голову ничего лучше не придумывается

Ответ 2



string = "Добро;Зло;Земля;Игра;Машина:" len([ i for i in string[:-1].split(";") if i[-1]=='а']) 2

Ответ 3



Можно использовать регулярное выражение: string = "Добро;Зло;Земля;Игра;Машина:" print(len(re.findall(r'а;|а:', string))) >>2 Здесь мы ищем все вхождения символа "а" с точкой с запятой или двоеточием.

Комментариев нет:

Отправить комментарий