---
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.