Упражнения

A: Делаем срезы

Дана строка.

Сначала выведите третий символ этой строки.

Во второй строке выведите предпоследний символ этой строки.

В третьей строке выведите первые пять символов этой строки.

В четвертой строке выведите всю строку, кроме последних двух символов.

В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).

В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.

В седьмой строке выведите все символы в обратном порядке.

В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего.

В девятой строке выведите длину данной строки.

Ввод Вывод
Абракадабра
р
р
Абрак
Абракадаб
Аркдба
бааар
арбадакарбА
абдкрА
11

B: В обратном порядке

Дана строка. Выведите её символы в обратном порядке, по одном символу в строке.

Ввод Вывод
Python
n
o
h
t
y
P

C: Количество слов

Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов. Используйте для решения задачи метод count.

Ввод Вывод
Hello world
2

D: Замена подстроки

Дана строка. Замените в этой строке все цифры 1 на слово one.

Ввод Вывод
1+1=2
one+one=2

E: Удаление символа

Дана строка. Удалите из этой строки все символы @.

Ввод Вывод
Bilbo.Baggins@bagend.hobbiton.shire.me
Bilbo.Bagginsbagend.hobbiton.shire.me

F: Две половинки

Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами.

Результат запишите в отдельную переменную и выведите на экран следующим образом: print("*" + s + "*")

Решение, в котором ответ выводится по-другому, приниматься не будет.

При решении этой задачи нельзя пользоваться инструкцией if.

Ввод Вывод
Hi
*iH*
Hello
*loHel*

G: Переставить два слова

Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами.

При решении этой задачи нельзя пользоваться циклами и инструкцией if.

Решение выведите так же, как в задаче «Две половинки».

Ввод Вывод
Hello world
*world Hello*

H: Дробь

Дана строка, в которой записана рациональная дробь в виде m/n, где m и n — целые неотрицательные числа, n не равно 0. Вычислите значение этой дроби и выведите его в виде действительного числа.

Указание. Найдите позицию символа «/». При помощи двух срезов выделите числитель и знаменатель, приведите их к типу int.

Ввод Вывод
179/57
3.1403508771929824

I: Удаление слова

Текст состоит из слов, разделённых пробелами. В тексте как минимум три слова. Удалите из текста второе слово.

Решение выведите так же, как в задаче «Две половинки».

В этой задаче нельзя использовать методы count и replace. Также желательно использовать метод find с двумя параметрами, вместо вызова метода find к срезу.

Ввод Вывод
In the hole in the ground there lived a hobbit
*In hole in the ground there lived a hobbit*

J: Повторение слова

Текст состоит из слов, разделённых пробелами. В тексте как минимум два слова. Продублируйте второе слово в тексте.

В этой задаче нельзя использовать методы count и replace. Также желательно использовать метод find с двумя параметрами, вместо вызова метода find к срезу.

Решение выведите так же, как в задаче «Две половинки».

Ввод Вывод
In the hole in the ground there lived a hobbit
*In the the hole in the ground there lived a hobbit*
Hello world
*Hello world world*

K: Разворот слова

Текст состоит из слов, разделённых пробелами. В тексте как минимум одно слово. Переставьте буквы второго слова (если оно есть) в обратном порядке.

Решение выведите так же, как в задаче «Две половинки».

В этой задаче нельзя использовать методы count и replace. Также желательно использовать метод find с двумя параметрами, вместо вызова метода find к срезу.

Ввод Вывод
In the hole in the ground there lived a hobbit
*In eht hole in the ground there lived a hobbit*
Hello
*Hello*

L: Футбольный матч

На табло стадиона в конце игры горит надпись:

Название 1-Название 2 A:B

где Название 1 и Название 2 — названия двух команд, а A:B — счёт матча.

Определите, какая команда победила.

Названия команд могут содержать любые символы (буквы, цифры, знаки), кроме «-» и «:». Символы «-» и «:» содержатся в строке ровно по одному разу.

Программа должна вывести название победившей команды, а если была ничья, то слово draw.

Решение выведите так же, как в задаче «Две половинки».

Ввод Вывод
Арсенал (Тула)-Спартак (Москва) 3:0
*Арсенал (Тула)*

M: Вставка символов

Дана строка. Получите новую строку, вставив между каждыми соседними символами исходной строки символ «.». Выведите полученную строку.

Решение выведите так же, как в задаче «Две половинки».

В этой задаче можно использовать цикл, но можно обойтись и без него (нужно догадаться самому).

Ввод Вывод
Python
*P.y.t.h.o.n*

N: Удалить каждый третий символ

Дана строка. Удалите из нее все символы, чьи индексы делятся на 3.

Решение выведите так же, как в задаче «Две половинки».

В этой задаче вам придётся использовать цикл.

Ввод Вывод
Python
*yton*

O: Метод бутерброда

Секретное агентство решило для шифрования переписки своих сотрудников использовать «метод бутерброда». Сначала буквы слова нумеруются в таком порядке: первая буква получает номер 1, последняя буква - номер 2, вторая – номер 3, предпоследняя – номер 4, потом третья … и так для всех букв (см. рисунок). Затем все буквы записываются в шифр в порядке своих номеров. Например, слово «sandwich» зашифруется в «shacnidw».

К сожалению, программист агентства, написал только программу шифрования и уволился. И теперь агенты не могут понять, что же они написали друг другу. Помогите им.

Вводится слово, зашифрованное методом бутерброда. Выведите расшифрованное слово.

Решение выведите так же, как в задаче «Две половинки».

Решите эту задачу при помощи срезов, не используя циклы.

Ввод Вывод
Aabrrbaacda
*Abracadabra*

P: Скрытие адреса email

Для защиты от ботов, собирающих с web-страниц адреса электронной почты для рассылки спама, используются методы скрытия адреса электронной почты. Рассмотрим самый простой метод скрытия: в адресе электронной почты символы «.» меняются на «(dot)», символ «@» меняется на «(at)».

Дана строка текста, в ней есть один адрес электронной почты (он содержит один символ «@»). В адресе электронной почты (считайте, что адрес — это слово, отделённое пробелами) выполните указанные замены, в остальных местах замены производить не нужно.

Решение выведите так же, как в задаче «Две половинки».

Ввод Вывод
Bilbo.Baggins@bagend.hobbiton.shire.me - valid email.
*Bilbo(dot)Baggins(at)bagend(dot)hobbiton(dot)shire(dot)me - valid email.*

Q: Смайлики

Напишите программу, которая посчитает количество смайликов в заданном тексте.

Смайликом будем считать последовательность символов, удовлетворяющую условиям:

Например, нижеприведенные последовательности являются смайликами:

:)
;---------[[[[[[[[

в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики внутри):

:-)]
;--
-)
::-(
:-()

В этой задаче надо будет посчитать количество смайликов, содержащихся в данной строке.

Выведите одно число — количество смайликов, которые встречаются в тексте.

Эту задачу можно решить в одну строчку.

Ввод Вывод
:);------[[[[[]
2
:-)];----;
1
-)(---:---
0
hello :-)
1

ZA: Максимальный подпалиндром

Палиндромом называется строка, которая читается одинаково как слева направо, так и справа налево. Примеры палиндромом: RADAR, RACECAR.

В данной строке найдите подстроку максимальной длины, являющуюся палиндромом, и выведите её. Если таких строк несколько, выведите ту, которая находится ближе к началу строки.

Ввод Вывод
ABRACADABRA
ACA

ZB: Дополни до палиндрома

Дано слово. Определите, какое наименьшее количество символов нужно дописать в конец этой строки, чтобы получился палиндром.

Ввод Вывод
ABCD
3
ABB
1

ZC: Клад

Путь к кладу задан в виде указаний, какое количество шагов нужно пройти в одном из четырёх направлений: север (N), юг (S), запад (W), восток (E). Весь маршрут записан в виде строки, содержащей последовательность из чисел и следующих за числами букв, указывающих направление перемещения. Например, строка «7N5E2S3E» означает «пройти 7 шагов на север, 5 шагов на восток, 2 шага на юг, 3 шага на восток». В маршруте может быть много команд перемещения, поэтому каждый такой маршрут можно сократить. Например, ранее приведённый маршрут можно сократить до «5N8E». По данному маршруту до клада сократите его до строки минимальной длины.

Программа должна вывести маршрут, ведущий в ту же точку, записанный в таком же виде, как во входных данных, используя минимальное число символов. Если ответов несколько, программа должна вывести один (любой) из них.

Ввод Вывод
7N5E2S3E
5N8E
10N30W20N
30N30W

ZD: Удалить один символ

Определите, какой символ нужно удалить из данной строки, чтобы она стала палиндромом.

Программа получает на вход одну строку и должна вывести единственное число: номер символа в строке, при удалении которой слово становится палиндромом, нумерация начинается с 1. Если при удалении любого символа строка не станет палиндромом, программа должна вывести число 0.

Длина входной строки может быть от 2 до 100.000 символов, решение должно иметь сложность \(O(n)\), где \(n\) — длина строки.

Ввод Вывод
raceczar
6
car
0

ZE: Значение многочлена

Вам дана строка, содержащая описание некоторого многочлена от переменной \(x\) и значение \(x\). Вычислите значение данного многочлена при данном \(x\).

В первой строке входного файла записан многочлен в виде суммы одночленов. Между одночленами находится знак «+» или «-». Перед первым одночленом может быть знак «-». Одночлен записывается как

[Коэффициент*]x[^Степень]

или как

Коэффициент
где Коэффициент — натуральное число, не превосходящее 100, x — символ переменной (всегда маленькая латинская буква x), Степень —натуральное число, не превосходящее 4. Параметры, взятые в квадратные скобки, могут быть опущены.

Во второй строке записано одно целое число — значение x.

Все числа в исходном файле по модулю не превосходят 100. Количество одночленов не более 10 (могут быть одночлены одинаковой степени).

Выведите одно число — значение данного многочлена при данном значении x.

Ввод Вывод
8*x+5
7
61
-2+x^1-3*x^2+x^2+100*x^3-2*x
0
-2