#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 Здесь мы ищем все вхождения символа "а" с точкой с запятой или двоеточием.
Комментариев нет:
Отправить комментарий