--- tags: Python Step --- # Практика по теме 5. Строковые величины На сайте https://pythontutor.ru/lessons/str/problems/slices/ решить все задачи к занятию *5. Строки* Выслать *архив с решениями всех задач (файлы с расширением .py) и скриншотом с сайта*, на котором видно количество решенных задач и имя текущего пользователя. ## [Задача 1. Делаем срезы](https://pythontutor.ru/lessons/for_loop/problems/series_1/) Дана строка. Сначала выведите третий символ этой строки. Во второй строке выведите предпоследний символ этой строки. В третьей строке выведите первые пять символов этой строки. В четвертой строке выведите всю строку, кроме последних двух символов. В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого). В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки. В седьмой строке выведите все символы в обратном порядке. В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего. В девятой строке выведите длину данной строки. :::spoiler Решение ``` python s = input() print(s[2]) print(s[-2]) print(s[:5]) print(s[:-2]) print(s[::2]) print(s[1::2]) print(s[::-1]) print(s[::-2]) print(len(s)) ``` ::: ## [Задача 2. Количество слов](https://pythontutor.ru/lessons/str/problems/num_words/) Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов. Используйте для решения задачи метод `count`. :::spoiler Решение ``` python n = input().count(' ') + 1 print(n) ``` ::: ## [Задача 3. Две половинки](https://pythontutor.ru/lessons/str/problems/two_halves/) Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран. При решении этой задачи не стоит пользоваться инструкцией `if`. :::spoiler Решение ``` python s = input() n = len(s) // 2 + len(s) % 2 print(s[n:] + s[:n]) ``` ::: ## [Задача 4. Переставить два слова](https://pythontutor.ru/lessons/str/problems/swap_two_words/) Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами. Результат запишите в строку и выведите получившуюся строку. При решении этой задачи не стоит пользоваться циклами и инструкцией `if`. :::spoiler Решение ``` python s = input() n = s.find(' ') print(s[n + 1:], s[:n]) ``` ::: ## [Задача 5. Первое и последнее вхождения](https://pythontutor.ru/lessons/str/problems/first_and_last_occurences/) Дана строка. Если в этой строке буква `f` встречается только один раз, выведите её индекс. Если она встречается два и более раз, выведите индекс её первого и последнего появления. Если буква `f` в данной строке не встречается, ничего не выводите. При решении этой задачи не стоит использовать циклы. :::spoiler Решение ``` python s = input() n = s.count('f') if n == 1: print(s.find('f')) elif n > 1: print(s.find('f'), s.rfind('f')) ``` ::: ## [Задача 6. Второе вхождение](https://pythontutor.ru/lessons/str/problems/second_occurence/) Дана строка. Найдите в этой строке второе вхождение буквы `f`, и выведите индекс этого вхождения. Если буква `f` в данной строке встречается только один раз, выведите число `-1`, а если не встречается ни разу, выведите число `-2`. :::spoiler Решение ``` python s = input() n = s.count('f') if n == 0: print(-2) elif n == 1: print(-1) else: k = s.find('f') + 1 print(s[k:].find('f') + k) # print(s.find('f', s.find('f') + 1)) ``` ::: ## [Задача 7. Удаление фрагмента](https://pythontutor.ru/lessons/str/problems/delete_chunk/) Дана строка, в которой буква `h` встречается минимум два раза. Удалите из этой строки первое и последнее вхождение буквы `h`, а также все символы, находящиеся между ними. :::spoiler Решение ``` python s = input() print(s[:s.find('h')] + s[s.rfind('h') + 1:]) ``` ::: ## [Задача 8. Обращение фрагмента](https://pythontutor.ru/lessons/str/problems/reverse_chunk/) Дана строка, в которой буква `h` встречается как минимум два раза. Разверните последовательность символов, заключенную между первым и последним появлением буквы `h`, в противоположном порядке. :::spoiler Решение ``` python s = input() h1 = s.find('h') h2 = s.rfind('h') print(s[:h1+1] + s[h2-1:h1:-1] + s[h2:]) ``` ::: ## [Задача 9. Замена подстроки](https://pythontutor.ru/lessons/str/problems/replace_substring/) Дана строка. Замените в этой строке все цифры `1` на слово `one`. ## [Задача 10. Удаление символа](https://pythontutor.ru/lessons/str/problems/delete_char/) Дана строка. Удалите из этой строки все символы `@`. ## [Задача 11. Замена внутри фрагмента](https://pythontutor.ru/lessons/str/problems/replace_in_chunk/) Дана строка. Замените в этой строке все появления буквы `h` на букву `H`, кроме первого и последнего вхождения. ## [Задача 12. Удалить каждый третий символ](https://pythontutor.ru/lessons/str/problems/delete_every_third_char/) Дана строка. Удалите из нее все символы, чьи индексы делятся на 3.