Как узнать номер буквы в алфавите python
Перейти к содержимому

Как узнать номер буквы в алфавите python

  • автор:

Найти позицию букв в алфавите и букву по ее номеру

Первая часть.
Вводятся две строчные (малые) английские буквы. Определить номера этих букв в алфавите, а также количество символов между ними.

Вторая часть.
Определить букву по ее позиции (номеру) в алфавите. Номер вводится с клавиатуры.

Пример выполнения программы

Первая буква: b Вторая буква: f Позиция первой буквы: 2 Позиция второй буквы: 6 Количество букв между ними: 3 Позиция буквы в алфавите: 26 Это буква - z

Исходный код программы на языке Паскаль

var a, b: char; an, bn, n: byte; begin write('Первая буква: '); readln(a); write('Вторая буква: '); readln(b); an := ord(a); bn := ord(b); writeln('Позиция первой буквы: ', an - ord('a') + 1); writeln('Позиция второй буквы: ', bn - ord('a') + 1); n := abs(bn - an) - 1; writeln('Количество букв между ними: ', n); writeln; write('Позиция буквы в алфавите: '); readln(n); n := n + ord('a') - 1; writeln('Это буква - ', chr(n)); end.

Позиция буквы в алфавите (номер буквы в алфавите) определяется ее «смещением» относительно первой буквы алфавита. Если знать коды первой буквы алфавита (символа ‘a’ ) и заданной, то разность их кодов покажет, на сколько позиций они отстоят друг от друга.

В языке программирования Pascal код буквы по таблице кодов символов ASCII определяется с помощью функции ord() , которой в качестве значения передается символ.

Для обратного действия, то есть определения буквы, стоящей в определенном месте алфавита, надо к позиции буквы прибавить код первой буквы алфавита. После этого получить искомую букву по ее коду. Это делается с помощью функции chr() , которой передается число-код символа по таблице ASCII.

Нужно заменить числа на буквы из алфавита, соответствующие этим числам. Разный результат в программе, как исправить?

Здравствуйте проблема такая, никак не пойму.
Вот задание:
Вам необходимо в строке, полученной со стандартного ввода найти все цифры и заменить их на букву латинского алфавита, располагающуюся по данному индексу (все символы в строке вводятся в нижнем регистре).
Примечание: две цифры не могут располагаться рядом. Те если у вас есть строка «19у» это значит что у вас одна цифра 19, а не 1 и 9. Как результат вы должны получить «sy»
Sample Input:
Hel12o 16e15ple
Sample Output:
Hello people

latin="abcdefghijklmnopqrstuvwxyz" text = input("Введите строку: ") i = 0 s = "" while i < len(text): a = text[i] while "0" 

По заданию фразу "Hel12o 16e15ple" выводит так "Hello pe1eple" - правильно меняет буквы из алфавита до пробела, но после пробела почему-то не правильно.
Если же к примеру ввести фразу "12ghj3jhh23" (просто произвольная) - то здесь выдает "lghjcjhhbc" - последние две цифры не воспринимает как число 23 и выводит по буквам "b" и "c".
Если же к примеру поменять 23 на 24: "12ghj3jhh24" - то тут выводит всё как положено "lghjcjhhx" - все правильно заменяет.
В чем может быть проблема? почему не приязнь у программы к числу 23 и пробелам.
Можно как-то подправить именно этот код, без "наворотов", а то я только учусь и еще не вcе понимаю.

  • Вопрос задан более года назад
  • 4398 просмотров

Проход по алфавиту Python

Можно ли как-то инкрементировать символ латинского алфавита? Нужно пройтись по алфавиту в Python, либо по числу получать какой-то определенный символ, есть такие функции?

Отслеживать
задан 11 сен 2016 в 17:47
2,745 1 1 золотой знак 16 16 серебряных знаков 32 32 бронзовых знака

сам новенький в питоне, но если нет то пишется ж просто a=tuple('abcdef. xyz') вместо точек вставить все буквы алфавита и получите то, что вам надо.

11 сен 2016 в 18:06

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Получение символа по его номеру из Unicode:

>>> chr(65) 'A' >>> chr(122) 'z' >>> print(chr(128522)) �� 

(в Python 2 лучше вместо chr использовать unichr )

Получение номера из Unicode по символу:

>>> ord('A') 65 >>> ord('z') 122 >>> ord('��') 128522 

Заранее заготовленные строки с латинскими (и не только) символами есть в модуле string :

>>> import string >>> string.ascii_uppercase 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> string.ascii_lowercase 'abcdefghijklmnopqrstuvwxyz' >>> string.ascii_letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 

По этим строкам можно проходиться циклом:

for c in string.ascii_letters: print(c) 

Во всяких генераторных выражениях и условиях, разумеется, тоже:

>>> import string >>> s = 'fooУБРАТЬbarОТСЮДАbazНЕЛАТИНСКОЕ' >>> s2 = ''.join(c for c in s if c in string.ascii_letters) >>> print(s2) foobarbaz 

От A до Z

Напишите функцию, которая будет принимать строку — диапазон букв английского алфавита. Функция должна возвращать строку из всех букв этого диапазона. Если в диапазоне заданы заглавные буквы, в результирующей строке тоже должны быть заглавные.

Примечания

  • Диапазон будет задаваться двумя буквами с дефисом между ними.
  • Обрабатывать ошибки не нужно (при указании диапазона обе буквы будут в одинаковом регистре и располагаться будут в алфавитном порядке).

Примеры

gimme_the_letters("a-z") ➞ "abcdefghijklmnopqrstuvwxyz" gimme_the_letters("h-o") ➞ "hijklmno" gimme_the_letters("Q-Z") ➞ "QRSTUVWXYZ" gimme_the_letters("J-J") ➞ "J"

Варианты решений

def gimme_the_letters(sp): return "".join(chr(n) for n in range(ord(sp[0]),ord(sp[-1])+1))
def gimme_the_letters(spectrum): a = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' x, y = spectrum.split('-') return a[a.index(x):a.index(y) + 1]
def gimme_the_letters(spectrum): start, end = [ord(i) for i in spectrum.split('-')] return ''.join(chr(i) for i in range(start, end+1))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *