Python'da alfabe harflerini sayıya dönüştürme

Aşağıdakiler nasıl tamamlanabilir?

characters = ['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''t''u''v''w''x''y''z']
numbers = ['1''2''3''4''5''6''7''8''9''10''11''12''13''14''15''16''17''18''19''20''21''22''23''24']
text = raw_input(' Write text: ')

Bunu birçok şekilde çözmeye çalıştım ama bir türlü sonuca ulaşamadım. Exc yapmak istiyorum. Eğer "hello" yazarsam çıktı alfabedeki gibi sıralanmış sayılar halinde olsun. Örnek a = 1 < alfabede.

Şöyle bir şeye ne dersin?

print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]

ord list comprehension ASCII karakter kodları

EDIT Benden açıklamamı istediğiniz için açıklayacağım... gerçi yorumlarda [?] tarafından zaten oldukça iyi açıklanmıştı.

Başlangıç için bunu birden fazla satırda yapalım.

input = raw_input('Write Text: ')
input = input.lower()
output = []
for character in input:
    number = ord(character) - 96
    output.append(number)
print output

Bu da aynı şeyi yapıyor ama daha okunabilir. İlk cevabımı anlamaya çalışmadan önce burada neler olup bittiğini anlayabildiğinizden emin olun. Buradaki her şey oldukça standart, basit Python. Dikkat edilmesi gereken tek şey ord fonksiyonudur. ord, ordinal anlamına gelir ve hemen hemen her yüksek seviyeli dilde bu tür bir fonksiyon bulunur. Size herhangi bir karakterin sayısal gösterimine bir eşleme verir. ord'un ters fonksiyonuna chr denir.

chr(ord('x')) == 'x' # for any character, not just x.

Kendiniz test ederseniz, a harfinin sıra numarası 97'dir (yukarıda yayınladığım üçüncü bağlantı tüm ASCII karakter setini gösterecektir.) Her küçük harf 97-122 aralığındadır (26 karakter.) Dolayısıyla, herhangi bir küçük harfin sıra numarasından 96'yı çıkarırsanız, 'a' == 1 aldığınızı varsayarak alfabedeki konumunu elde edersiniz. Yani, 'b' == 98, 'c' == 99, vb. 96'yı çıkardığınızda, 'b' == 2, 'c' == 3, vb.

Gönderdiğim ilk çözümün geri kalanı, liste anlama adı verilen öğrenebileceğiniz bazı Python hileleridir. Ancak, ben olsam buna odaklanmaz, ord'un arkadaşınız olduğu herhangi bir dilde problemi çözmeyi öğrenmeye odaklanırdım. Umarım bu yardımcı olur.

Yorumlar (4)

Bu, bu amaç için kullandığım bir işlevdir. Hem büyük hem de küçük harfler için çalışır.


def convert_char(old):
    if len(old) != 1:
        return 0
    new = ord(old)
    if 65 
Yorumlar (3)
>>> [str(ord(string.lower(c)) - ord('a') + 1) for c in string.letters]
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '20', '21', '22', '23', '24', '25', '26', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24',
 '25', '26']
Yorumlar (0)