1

我正在尝试扩展 Codecademy pig latin 转换器,以便它接受句子而不仅仅是单个单词并转换句子中的每个单词。这是我的代码:

pyg = 'ay'

pyg_input = raw_input("Please enter a sentence: ")
print

if len(pyg_input) > 0 and pyg_input.isalpha():
    lwr_input = pyg_input.lower()
    lst = lwr_input.split()
    for item in lst:
        frst = lst[item][0]
        if frst == 'a' or frst == 'e' or frst == 'i' or frst == 'o' or frst == 'u':
            lst[item] = lst[item] + pyg
        else:
            lst[item] = lst[item][1:len(lst[item]) + frst + pyg
    print ' '.join(lst)

我不确定出了什么问题,所以我很感激任何帮助。谢谢

4

2 回答 2

3
  • 句子可以包含非字母(例如空格):因此 pyg_input.isalpha() 将产生 False:
  • lst[item]用于访问每个字符。而是使用item.
  • 迭代列表时无法更新列表。在下面的代码中,我使用了另一个名为latin.
  • 您的代码在以下行中有一个 SyntaxError(没有关闭的括号):

    lst[item][1:len(lst[item])
    
  • 以下代码并不完美。例如,您需要过滤掉非字母,例如,, ., ...


pyg = 'ay'

pyg_input = raw_input("Please enter a sentence: ")
print

if len(pyg_input) > 0:# and pyg_input.isalpha():
    lwr_input = pyg_input.lower()
    lst = lwr_input.split()
    latin = []
    for item in lst:
        frst = item[0]
        if frst in 'aeiou':
            item = item + pyg
        else:
            item = item[1:] + frst + pyg
        latin.append(item)
    print ' '.join(latin)
于 2013-07-28T12:34:11.387 回答
0

我尝试了以下方法来实现 pyg_latin 翻译器

import enchant
input_str = raw_input("Enter a word:")
d = enchant.Dict("en_US")
d.check(input_str)
pyg_latin = input_str[1:]+input_str[0]+"ay"
print pyg_latin
于 2017-07-20T12:40:25.750 回答