-
Notifications
You must be signed in to change notification settings - Fork 0
/
pig_latin.py
56 lines (44 loc) · 1.93 KB
/
pig_latin.py
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
def pig_latin(word):
english_word = word
# This string contains all possible initial consonant clusters in the English language.
consonant_clusters = "plprblbrtrdrklkrglgrflfrthrshrskskrslsmsnspsplsprststrswtwdrkwskwgw"
vowels = "aeiouAEIOU"
# First we deal with words that start with 3-letter consonant clusters.
if english_word[:3] in consonant_clusters:
english_word = english_word.lower()
word_length = len(english_word)
first_three_letters = english_word[:3]
other_letters = ""
for letter in english_word[3:word_length]:
other_letters += letter
pig_latin_word = other_letters + "-" + first_three_letters + "ay"
return pig_latin_word
# Then we take care of words that start with 2-letter consonant clusters.
elif english_word[:2] in consonant_clusters:
english_word = english_word.lower()
word_length = len(english_word)
first_two_letters = english_word[:2]
other_letters = ""
for letter in english_word[2:word_length]:
other_letters += letter
pig_latin_word = other_letters + "-" + first_two_letters + "ay"
return pig_latin_word
# Then we catch words that start with vowels.
elif english_word[0] in vowels:
pig_latin_word = english_word + "-yay"
return pig_latin_word
# Everything else gets treated the same (okay, so I haven't dealt with silent letters...)
else:
word_length = len(english_word)
first_letter = english_word[0]
other_letters = ""
for letter in english_word[1:word_length]:
other_letters += letter
pig_latin_word = other_letters + "-" + first_letter + "ay"
return pig_latin_word
# Unit tests
assert pig_latin("Rachel") == "achel-Ray"
assert pig_latin("Ollie") == "Ollie-yay"
assert pig_latin("snack") == "ack-snay"
assert pig_latin("three") == "ee-thray"
assert pig_latin("I") == "I-yay"