将python字符串转换为pig latin

时间:2016-04-01 02:45:28

标签: python-2.7

def isAlpha(c):
return (ord(c) >= 65 and ord(c) <= 95) or \
(ord(c) >= 97 and ord(c) <= 122)

# testing first function 

print isAlpha("D")
print isAlpha("z")
print isAlpha("!")





s = "AEIOUaeiou"
def isVowel(c):
    return s.find(c) > -1 

# testing second function 

print isVowel("A")
print isVowel("B")
print isVowel("c")
print isVowel(" ")
print isVowel("a")

def convPigLatin_word(word): 
    if isVowel(word[0]):
        word += "way"
while not isVowel(word[0]):
    word = word[1:] + word[0]
    if isVowel(word[0]): 
        word += "ay"
return word

# testing third function
print convPigLatin_word("This")
print convPigLatin_word("ayyyyyylmao")

def translate(phrase): 
final = ""
while phrase.find(" ") != -1:
    n = phrase.find(" ")
    final += convPigLatin_word(phrase[0:n]) + " "
    phrase = phrase[n+1:]
if phrase.find(" ") == -1: 
    final += convPigLatin_word(phrase)
return final

print translate("Hello, this is team Number Juan") #Should be "elloHay, isthay isway eamtay umberNay uanJay"

我尝试创建一个将字符串转换为pig latin的代码。但我被困在非字母数字字符上。 while循环仅适用于逗号。我怎么解决这个问题?我不知道在哪里实现isAlpha代码来检查非字母数字字符。任何建议都有帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用.split('')迭代短语的单词。然后,您可以使用.isalpha()

测试它们的特殊字符
pigLatin =  lambda word: word[1:]+ word[0]+"ay"

def testChars(word):
  text = ""
  for char in list(word):
    if char.isalpha():
        text += char
    else:
        return pigLatin(text)+ char

def testWords(lis):
  words = []
  lis = lis.split(' ')
  for word in lis:
    if not word.isalpha():
        words.append( testChars(word) )
    else:
        words.append(pigLatin(word))
  return (' ').join(words)

phrase = "I, have, lots of! special> characters;"
print testWords(phrase)