Выведите все символы ASCII с кодами от 33 до 126 и их коды в следующем виде:
Вывод |
---|
! 33 " 34 # 35 ... } 125 ~ 126 |
Напишите программу, которые выводит исторические кириллические символы, начиная с омеги и заканчивая коппой.
Программа должна вывести заглавные буквы, их коды — чётные числа от 1120 до 1152, разделяя символы пробелом.
Вывод |
---|
Ѡ Ѣ Ѥ Ѧ Ѩ Ѫ Ѭ Ѯ Ѱ Ѳ Ѵ Ѷ Ѹ Ѻ Ѽ Ѿ Ҁ |
Дан один символ. Выведите следующий за ним символ в таблице ASCII.
Ввод | Вывод |
---|---|
A |
B |
z |
{ |
Выведите подряд, без пробелов, все символы, лежащие в таблице ASCII между двумя заданными символами.
Программа получает на вход два символа, каждый в отдельной строке и должна вывести строку, начинающуюся первым из заданных символов и заканчивающуюся вторым.
Ввод | Вывод |
---|---|
A |
ABCD |
0 |
0123456789 |
Для данного символа проверьте, является ли он цифрой.
Решение оформите в виде функции isdigit(c: str) -> bool
.
На проверку сдайте только тело функции.
В решении нельзя использовать циклы условную инструкцию.
В решении нельзя использовать константы с неочевидным значением типа 48 или 57.
Да и функция ord
тоже не нужна.
Вызов функции | Возвращаемое значение |
---|---|
isdigit('0') |
True |
isdigit('A') |
False |
Для тех, кто решил эту задачу. У строк в языке Python есть метод
isdigit()
, то есть использовать его нужно так:
s.isdigit()
. Если длина строки больше 1, то
метод возвращает True
, если все символы строки являются цифрами.
Помимо этого есть методы isalpha
, isupper
,
islower
, проверяющие, является ли символ буквой, заглавной буквой,
строчной буквой. Об этих и других методах можно прочитать
в документации.
Напишите функцию upper(c: str) -> str
, которая переводит символ в верхний регистр, то есть для строчной
буквы латинского алфавита возвращает сооветствующую заглавную букву латинского алфавита, а для остальных символов возвращает тот же символ.
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
upper('f') |
'F' |
upper('F') |
'F' |
upper('4') |
'4' |
Напишите функцию lower(s: str) -> str
, которая переводит все символы данной строки в нижний регистр.
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
lower('Hello, world!') |
'hello, world!' |
Для тех, кто решил эту задачу. У строк в языке Python есть методы
upper()
и lower()
, аналогичные данным.
Об этих и других методах можно прочитать
в документации.
Дано слово, состоящее только из заглавных и строчных латинских букв. Проверьте, верно ли что это слово читается одинаково как справа налево, так и слева направо (то есть является палиндромом), если считать заглавные и строчные буквы не различающимися.
Решение оформите в виде функции is_palindrome(s: str) -> bool
, возвращающей
значение типа bool
.
Вызов функции | Возвращаемое значение |
---|---|
is_palindrome('Radar') |
True |
is_palindrome('True') |
False |
Дана непустая строка, состоящая из \(n\) цифр (т.е. однозначных чисел), между которыми стоит \(n-1\) знак операции, каждый из которых может быть либо +, либо -. Вычислите значение данного выражения.
Решение оформите в виде функции evaluate(s: str) -> int
,
получающей в качестве аргумента строку и возвращающую ее значение.
На проверку сдайте только тело функции. Решение должно иметь сложность \(O(n)\), где \(n\) — длина строки.
Вызов функции | Возвращаемое значение |
---|---|
evaluate('1+2-3') |
0 |
Дано выражение одно из следующих видов: \(A+B\), \(A-B\) или \(A\ast B\), где \(A\) и \(B\) — целые неотрицательные числа. Определите значение этого выражения.
Решение оформите в виде функции evaluate(s: str) -> int
,
получающей в качестве аргумента строку и возвращающую ее значение.
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
evaluate('2*2') |
4 |
evaluate('100-101') |
-1 |
Дана строка, возможно, содержащая пробелы. Определите количество слов в этой строке. Слово — это несколько подряд идущих букв латинского алфавита (как заглавных, так и строчных).
Решение оформите в виде функции count_words(s: str) -> int
,
возвращающее значение типа int
.
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
count_words('Yesterday, all my troubles seemed so far away') |
8 |
Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы —строчными.
Решение оформите в виде функции capitalize(s: str) -> str
.
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
capitalize('In a hole in the ground there lived a hobbit.') |
'In A Hole In The Ground There Lived A Hobbit.' |
Дана строка. Определите максимальную букву, которая встречается в этой строке, при этом заглавные и строчные буквы нужно считать одинаковыми. Под буквой подразумеваются как русские, так и английские буквы, строка может содержать русские и английские буквы.
При решении задачи вам понадобятся методы строк, упомянутые раньше:
s.isalpha()
— возвращает True
или False
, в зависимости от того, является ли символ буквой
(все символы строки, если их несколько).
s.upper()
— возвращает значение строки, переведённой в верхний регистр.
s.lower()
— возвращает значение строки, переведённой в нижний регистр.
Решение оформите в виде функции max_char(s: str) -> str
.
Функция должна возвращать максимальную букву в верхнем регистре.
Если в данной строке нет символов, являющихся буквами, функция возвращает пустую строку.
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
max_char('Встретив двусмысленность, отбрось искушение угадать.') |
'Ь' |
Дана программа, которая может содержать ASCII-символы и русские буквы. Посчитайте, сколько раз в этой строке встречается каждый возможный символ. Выведите все встречающиеся в этой строке символы в порядке возрастания их кодов, а затем количество вхождений этого символа. Пробелы при этом игнорируйте (считаются только символы, чьи коды больше 32).
Задача должна решаться за однократный проход по данной строке. Для этого создайте список
count
, в котором значение count[i]
будет равно количеству
вхождений символа chr(i)
в данную строку.
Максимальный код символа русского алфавита равен 1105 (для буквы «ё»).
Ввод | Вывод |
---|---|
Встретив двусмысленность, отбрось искушение угадать. |
, 1 . 1 В 1 а 2 б 1 в 2 г 1 д 2 е 4 и 3 к 1 л 1 м 1 н 3 о 3 р 2 с 6 т 5 у 3 ш 1 ы 1 ь 3 |
Дана строка содержащая буквы русского и латинского алфавитов и иные символы. Определите, какая буква (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются. Буква «Ё» в тексте не встречается. Заглавные и строчные буквы считаются одинаковыми.
Программа должна вывести в первой строке все буквы, которые встречаются чаще всего в исходной строке. Выводить буквы необходимо в заглавном написании, в алфавитном порядке, без пробелов. Во второй строке выведите единственное число - сколько раз в данной строке встречаются эти буквы.
При решении этой задачи нельзя пользоваться вложенными циклами. Входная строка должна обрабатываться за один проход.
Ввод | Вывод | Примечание |
---|---|---|
Beautiful is better than ugly. Красивое лучше, чем уродливое. |
TЕ |
Программа выводит английскую букву «T», затем русскую букву «E» |
Даны две строки. Определите, можно ли получить одну из другой перестановкой символов.
Программа получает на вход две строки, содержащие только ASCII-символы, не содержащие пробелы.
Программа должна вывести слово YES
, если одна строка может быть получена из другой перестановкой букв или NO
.
Заглавные и строчные буквы в этой задаче считаются различными.
Ввод | Вывод |
---|---|
eleven_plus_two |
YES |
Eleven_plus_two |
NO |
Дана строка. Найдите в этой строке самое длинное слово и выведите его.
Если в строке несколько слов одинаковой максимальной длины, выведите первое из них.
Решение оформите в виде функции longest_word(s: str) -> str
, возвращающей
значение типа str
. Если в строке нет ни одной буквы,
функция возвращает пустую строку.
Слово — это несколько подряд идущих букв латинского алфавита (как заглавных, так и строчных).
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
longest_word('In a hole in the ground there lived a hobbit.') |
'ground' |
Капитан Флинт зарыл клад на Острове сокровищ.
Он оставил описание, как найти клад. Описание состоит из строк вида: “North 5
”,
где первое слово – одно из “North
”, “South
”,
“East
”, “West
”, а второе число – количество шагов,
необходимое пройти в этом направлении.
Напишите программу, которая по описанию пути к кладу определяет точные координаты клада, считая, что начало координат находится в начале пути, ось OX направлена на восток, ось OY – на север.
Программа получает на вход последовательность строк указанного вида, завершающуюся строкой
со словом “Treasure!
”. Программа должна вывести два целых числа:
координаты клада.
Ввод | Вывод |
---|---|
North 5 |
3 4 |
В шифре Цезаря каждый символ заменяется на другой символ, третий по счету в алфавите после данного, с цикличность. То есть символ A заменяется на D, символ B - на E, символ C - на F, ..., символ Z на C.
Дана строка, зашифруйте ее при помощи шифра Цезаря. Решение
оформите в виде функции caesar_cipher(s: str, k: int) -> str
, возвращающей
новую строку. s
— исходная строка,
k
— величина сдвига. Величина сдвига
может быть произвольным целым числом, в том числе и отрицательным.
В тексте могут быть только заглавные английские буквы и символы ASCII, не являющиеся буквами.
Вызов функции | Возвращаемое значение |
---|---|
caesar_cipher('IN A HOLE IN THE GROUND THERE LIVED A HOBBIT.', 3) |
'LQ D KROH LQ WKH JURXQG WKHUH OLYHG D KREELW.' |
Шифр замены обобщение шифра Цезаря. Каждая буква сообщения меняется на какую-то другую букву (разные буквы меняются на разные буквы). Символы, не являющиеся буквами, остаются такими же. Ключом шифрования является перестановка: указание того, на какую букву должна быть заменена каждая другая буква.
Вам дана строка, содержащая только заглавные латинские буквы и символы ASCII, не являющиеся буквами. Зашифруйте её при помощи шифра замены.
Решение оформите в виде функции substitution_cipher(msg: str, key: str) -> str
,
возвращающей новую строку с зашифрованным сообщением.
msg
— исходное сообщение,
key
— ключ шифрования.
Ключ шифрования представляет собой строку длиной 26, являющейся перестановкой символов от A до Z. В строке последовательно записаны буквы, в которые переходят буквы A, B, C, ..., Z исходного сообщения.
Вызов функции | Возвращаемое значение |
---|---|
substitution_cipher('IN A HOLE IN THE GROUND THERE LIVED A HOBBIT.', 'ABCDIFGHEJKLMNUPQRSTOVWXYZ') |
'EN A HULI EN THI GRUOND THIRI LEVID A HUBBET.' |
Расшифруйте сообщение, зашифрованное шифром замены.
Решение оформите в виде функции substitution_decipher(msg: str, key: str) -> str
,
возвращающей новую строку с расшифрованным сообщением.
msg
— зашифрованное сообщение,
key
— ключ шифрования, заданный как в предыдущей задаче.
Вызов функции | Возвращаемое значение |
---|---|
substitution_decipher('EN A HULI EN THI GRUOND THIRI LEVID A HUBBET.', 'ABCDIFGHEJKLMNUPQRSTOVWXYZ') |
'IN A HOLE IN THE GROUND THERE LIVED A HOBBIT.' |
Дана строка, содержащая одно или более целых неотрицательных чисел, разделенных знаками “+” или “-”. Вычислите значение этого выражения.
Решение оформите в виде функции evaluate(s)
.
На проверку сдайте только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
evaluate('21+7-10') |
18 |
Во многих англоговорящих странах время записывается в 12-часовом формате с указанием одного из двух 12-часовых интервалов: до полудня (a.m.) или после полудня (p.m.). Формально запись времени в 12-часовом формате выглядит, как строка “h:mm x.m.”, где h — число часов от 1 до 12 (однозначное или двухзначное), mm — число минут от 00 до 59, дополненное нулями до двух разрядов, x — одна из двух букв “a” или “p”. Подробней примеры записи времени и их перевод в 24-часовой формат можно найти в википедии.
Дана строка с записью некоторого времени в 12-часовом формате. Выведите его в 24-часовом формате “hh:mm” (hh — количество часов от 00 до 23, дополненное нулями до двух разрядов, mm — количество минут от 00 до 59, дополненное нулями до двух разрядов).
Ввод | Вывод |
---|---|
1:00 a.m. |
01:00 |
12:34 p.m. |
12:34 |
В сети интернет каждому компьютеру присваивается четырехбайтовый код, который принято записывать в виде четырех чисел, каждое из которых может принимать значения от 0 до 255, разделенных точками. Вот примеры правильных IP-адресов:
127.0.0.0 192.168.0.1 255.0.255.255
Программа получает на вход строку из произвольных символов. Если эта строка является корректной записью
IP-адреса, выведите YES
, иначе выведите NO
.
Ввод | Вывод |
---|---|
127.0.0.1 |
YES |
Хорошо известна задача-шутка, в которой требуется продолжить числовую последовательность:
1 11 21 1211 111221 312211 13112221 1113213211 ...
Свойства данного ряда изучались математиками, а сама последовательность названа look-and-say sequence.
Напишите программу, которая по данному числу \(k\le 25\) выводит \(k\)-е число в этой последовательности.
Ввод | Вывод |
---|---|
4 |
1211 |
В шифре перестановки меняется порядок следования букв, но сами буквы не меняются. При шифровании сообщение разбивается на блоки длины \(n\), символы внутри блока переставляются в соответствии с ключом. Ключ — это перестановка длины \(n\).
Дано сообщение и ключ шифрования, зашифруйте сообщение при помощи данного ключа.
Длина ключа может быть строкой длиной \(n\) (\(1 \le n \le 9\)), состоящей из неповторяющихся
цифр от 1 до \(n\). Перестановка показывает, на какие позиции переходят символы
блока с номерами 1, 2, ..., \(n\). То есть перестановка вида 51234
означает, что блок длины 5 циклически сдвигается вправо на 1 символ.
При шифровании сообщение разбивается на блоки длины \(n\), если длина сообщения некратна \(n\), то в конец сообщения дописываются точки.
Решение оформите в виде функции transposition_cipher(msg: str, key: str) -> str
,
где msg
— исходное сообщение,
key
— ключ шифрования.
Вызов функции | Возвращаемое значение |
---|---|
transposition_cipher('IN A HOLE IN THE GROUND THERE LIVED A HOBBIT', '312') |
' INHA EOLN IH TGE URO NDETH REVLI EDHA BOB.IT' |
Строка состоит из целых неотрицательных чисел, разделенных знаками операций “+”, “-” и “*”. Вычислите значение этого выражения, выполняя действия по правилам арифметики.
Тесты к этой задаче закрытые.
Ввод | Вывод |
---|---|
10-2*3 |
4 |
Строка состоит из целых неотрицательных чисел (последовательности цифр), бинарных операций “+”, “-” и “*” и круглых скобок. Вычислите значение этого выражения, выполняя действия по правилам арифметики.
В выражении нет пробелов и унарных операций.
Тесты к этой задаче закрытые.
Ввод | Вывод |
---|---|
(1+(10+100))*(3-5)-0 |
-222 |
Добавим к предыдущей задаче операции “унарный плюс” и “унарный минус”
Ввод | Вывод |
---|---|
(1-(-10-100))*(-3-(-5))-(+0) |
222 |