这段代码的顺序有什么问题?

时间:2012-08-10 01:35:00

标签: python python-2.7

我正在尝试用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]

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

3 个答案:

答案 0 :(得分:5)

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

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

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

if first in 'aeiou':

我确信有更好的方法来处理它,但这应该适合您的情况。

修改if语句更改为@Levon的方法(更多Pythonic)

答案 1 :(得分:3)

这一行:

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

不按预期方式行事。 I actually answered basically this exact question a few days ago

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

答案 2 :(得分:3)

(1)您的if语句可以在缩短(正确)的版本中重写,如下所示:

if first in 'aeiou':

我最近给出了更多解释here,以解决与你一样的问题。

(2)重新提出关于将这两行代码放在何处的问题:

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

print original放在if声明中。他们将您的输入单词转换为小写,然后取出单词的第一个字母并将其分配给变量first,然后用于检查元音/辅音。