我的代码是:
sentenceToTranslate = raw_input("Please write in the sentence you want to translate: ")
words = sentenceToTranslate.split(" ")
for word in words:
if isVowel(word[0]):
print "TEST"
def isVowel(letter):
if letter.lower() == "a" or letter.lower() == "e" or letter.lower() == "i" or letter.lower() == "o" or letter.lower() == "u":
return True
else:
return False
我得到的错误是:
NameError: name 'isVowel' is not defined
我做错什么了?在
冒着再次被否决的风险,以下是对这些“先定义后使用”要求的进一步深入了解。在
请注意,在函数被调用之前,不会处理函数体中是否存在符号。所以你可以这样写代码:
这个很好用。解释器/编译器通过模块自上而下工作,但是当它看到函数或类定义时,它处理函数的定义,而不是函数本身。在
代码失败的原因是对
isVowel
的引用不在函数内,而是在模块范围内。模块中不在函数中的代码会立即执行,因此解释器需要能够根据到目前为止看到的内容来解析任何名称。在您在函数被调用后定义了它。 由于源代码是未编译并在运行时进行解释,因此它不会检查此错误。在
此外,还可以将函数重新定义为
函数尚未定义,因此名称“is元音”没有绑定函数:只有在您说“def”时才会发生这种情况。在
解决方案:将代码移到
def isVowel(letter)
下方。在相关问题 更多 >
编程相关推荐