我正在尝试用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]
我很确定最后两行是不合适的,但我不知道它们应该去哪里,我不知道为什么。如果有人能向我解释,那就太好了。我只是在这个程序的阶段,我想检查第一个字母是元音还是辅音,我还没有翻译部分。
答案 0 :(得分:5)
您在检查其值后定义word
和first
,因此请在定义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
,然后用于检查元音/辅音。