嗨,我正在为codeacademy上的python在线教程,我已经创建了一个函数pyg拉丁语翻译器,它使用raw_input并将它变成pyglatin中的一个单词,但是,当我尝试将此翻译器变为一个函数,需要一个单词并返回一个单词在pyg拉丁我得到一个错误。这些工作的方式有根本的区别吗?初学者调试函数
这里是功能译者:
original = raw_input("Enter a word in English to translate to Pyg Latin:")
vowels = ["a", "e", "i", "o", "u"]
if len(original) > 0 and original.isalpha():
word = original.lower()
if word[0] in vowels:
translation = word + "ay"
print translation
else:
translation = word[1:] + word[0] + "ay"
print translation
else:
print "This is not a valid entry! Please try again."
# Here is the function that comes up with an error:
vowels = ["a", "e", "i", "o", "u"]
def pyglatin(eng):
if eng.isalpha() and len(eng) > 0:
word = eng.lower()
if word[0] in vowels:
return word + "ay"
else:
return word[1:] + word[0] + "ay"
else:
return False
当我尝试和调用函数和类型pyglatin(蚂蚁)为例,看看这个词蚂蚁的翻译,我得到这个错误:
回溯(最近通话最后一个):
文件 “”,1号线,在 pyglatin(蚂蚁) NameError:名字 '蚁族' 没有定义
请注意,所有的缩进都是正确的,但我可能没有在这里显示正确的间距。我真的只想知道我的逻辑是否存在根本问题。 谢谢!
你得到什么错误?发布完整的追溯。你的函数看起来不错,所以它可能在代码中的其他地方。 – Blender 2013-04-27 05:57:19
这可能不会解决你的问题,但有几点建议:'元音= [“a”,“e”,“i”,“o”,“u”]'可以用'vowels =“aeiou” '因为每个列表项只有一个字符长。 'len(eng)> 0'可以替换为'eng',因为如果字符串的长度大于零,那么字符串是真的,否则就是伪造的。 – icktoofay 2013-04-27 06:01:54
@icktoofay - 它比这更简单:'eng.isalpha()'如果字符串为空则返回false,所以这是唯一需要的测试。 – 2013-04-27 06:22:16