0

我正在尝试用 Python 制作一个 Pig Latin 翻译器。我还没有完成的产品,我正在通过 Codecademy 工作。到目前为止,这是我的代码:

pyg = 'ay'

original = raw_input('Enter a word:')
if len(original) > 0 and original.isalpha():
    print original
    if first == "a" or "e" or "i" or "o" or "u":
        print "vowel"
    else:
        print "consonant"
else:
    print 'empty'
word = original.lower()
first = word [0]

我很确定最后两行不合适,但我不知道它们应该去哪里,也不知道为什么。如果有人可以向我解释这一点,那就太好了。我只是在这个程序的阶段,我想检查第一个字母是元音还是辅音,我还没有在翻译部分。

4

3 回答 3

5

您正在定义wordfirst在检查它们的值之后,因此请在定义和检查长度之后尝试移动它们original(以避免空值的索引错误)。

此外,在您使用的地方if len(original) > 0,您实际上将其简化为,如果它是非空值if original,它将返回。True

另一件事 - 您对元音的检查不会返回预期值。相反,尝试这样的事情:

if first in 'aeiou':

我敢肯定有更好的方法来处理它,但这应该适用于您的情况。

编辑:将语句 更改为if@Levon 的方法(这更像是 Pythonic)

于 2012-08-10T01:43:14.047 回答
3

这一行:

if first == "a" or "e" or "i" or "o" or "u":

不按照您期望的方式行事。我实际上几天前基本上回答了这个确切的问题

如果您不理解我在那里给出的解释,请告诉我。

于 2012-08-10T01:41:43.107 回答
3

(1)您的if-statement 可以改写为缩短(和正确)的版本,如下所示:

if first in 'aeiou':

我最近在这里为与您解决相同问题的其他人提供了更多解释。

(2)关于将这两行代码放在哪里的问题:

word = original.lower()
first = word[0]

将它们放在您的print original内部if语句之后。他们将您输入的单词转换为小写,然后获取单词的第一个字母并将其分配给first随后用于检查元音/辅音的变量。

于 2012-08-10T01:45:51.223 回答