How to Replace Characters with Alphabet Positions in Python

The challenge

Given a string, replace every letter with its position in the alphabet.

If anything in the text isn’t a letter, ignore it and don’t return it.

"a" = 1"b" = 2, etc.

Example

alphabet_position("The sunset sets at twelve o'clock.")
Code language: Python (python)

Should return "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11" (as a string)

The solution in Python code

Option 1:

def alphabet_position(text): return ' '.join(str(ord(c) - 96) for c in text.lower() if c.isalpha())
Code language: Python (python)

Option 2:

def alphabet_position(text): al = 'abcdefghijklmnopqrstuvwxyz' return " ".join(filter(lambda a: a != '0', [str(al.find(c) + 1) for c in text.lower()]))
Code language: Python (python)

Option 3:

alphabet = 'abcdefghijklmnopqrstuvwxyz' def alphabet_position(text): if type(text) == str: text = text.lower() result = '' for letter in text: if letter.isalpha() == True: result = result + ' ' + str(alphabet.index(letter) + 1) return result.lstrip(' ')
Code language: Python (python)

Test cases to validate our solution

from random import randint test.assert_equals(alphabet_position("The sunset sets at twelve o' clock."), "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11") test.assert_equals(alphabet_position("The narwhal bacons at midnight."), "20 8 5 14 1 18 23 8 1 12 2 1 3 15 14 19 1 20 13 9 4 14 9 7 8 20") number_test = "" for item in range(10): number_test += str(randint(1, 9)) test.assert_equals(alphabet_position(number_test), "")
Code language: Python (python)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments