Замените все буквы следующими за ними по алфавиту

Bayfong

Новичок
Пользователь
Дек 7, 2020
2
0
1
Зашифруйте строку, состоящую из русских букв, пробелов и знаком препинания: замените все следующими за ними по алфавиту ("я" на "а")
a='Я люблю кунг-фу'
for i in a:
print (i.replace(i,str(ord(i)+1)))
Максимум, которого я смог достичь. Помогите пожалуйста, что я делаю не так?
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Зашифруйте строку, состоящую из русских букв, пробелов и знаком препинания: замените все следующими за ними по алфавиту ("я" на "а")
a='Я люблю кунг-фу'
for i in a:
print (i.replace(i,str(ord(i)+1)))
Максимум, которого я смог достичь. Помогите пожалуйста, что я делаю не так?
%
или пара ифов
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Зашифруйте строку, состоящую из русских букв, пробелов и знаком препинания: замените все следующими за ними по алфавиту ("я" на "а")
a='Я люблю кунг-фу'
for i in a:
print (i.replace(i,str(ord(i)+1)))
Максимум, которого я смог достичь. Помогите пожалуйста, что я делаю не так?
В питоне нет такой операции "зашифруйте". Есть "вывести на экран", "сохранить в переменную", "записать в Х", и всякое такое.
Что ты делаешь не так сложно сказать, не зная, что ты хочешь сделать.
Скорее всего, проблема в том, что str(ord(...)) отдает строковое представление числа, а тебе нужен символ под номером, это делается как chr(ord(...) + 1).
Кроме того, print по умолчанию печатает на новой строке, и это вряд ли то, что тебе нужно. Плюс, стоит сначала решить, что ты хочешь делать с маленькими/большими буквами, потому что их ord() разное.
Специально даю нечитаемое решение, чтоб разбирался сам, и получше сформулировал задание.
Python:
s = 'Я люблю кунг-фу'
new = ''.join((chr(ord(x) + 1) if x.lower() != 'я' else chr(ord(x) - 31)) if x.isalpha() else x for x in s)
print(new)
>>> А мявмя лфод-хф
 

Bayfong

Новичок
Пользователь
Дек 7, 2020
2
0
1
В питоне нет такой операции "зашифруйте". Есть "вывести на экран", "сохранить в переменную", "записать в Х", и всякое такое.
Что ты делаешь не так сложно сказать, не зная, что ты хочешь сделать.
Скорее всего, проблема в том, что str(ord(...)) отдает строковое представление числа, а тебе нужен символ под номером, это делается как chr(ord(...) + 1).
Кроме того, print по умолчанию печатает на новой строке, и это вряд ли то, что тебе нужно. Плюс, стоит сначала решить, что ты хочешь делать с маленькими/большими буквами, потому что их ord() разное.
Специально даю нечитаемое решение, чтоб разбирался сам, и получше сформулировал задание.
Python:
s = 'Я люблю кунг-фу'
new = ''.join((chr(ord(x) + 1) if x.lower() != 'я' else chr(ord(x) - 31)) if x.isalpha() else x for x in s)
print(new)
>>> А мявмя лфод-хф
прикол в том, что задание формулировал не я, а учитель информатики ))))
 

Форум IT Специалистов