我的方法在我自己的程序中得到认可。可能是新手的错误

2024-09-29 21:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码是:

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

我做错什么了?在


Tags: or代码ininputrawreturniflower
3条回答

冒着再次被否决的风险,以下是对这些“先定义后使用”要求的进一步深入了解。在

请注意,在函数被调用之前,不会处理函数体中是否存在符号。所以你可以这样写代码:

def A():
    # calls B - even though B is defined later in the module
    B()

def B():
    # calls A
    A()

这个很好用。解释器/编译器通过模块自上而下工作,但是当它看到函数或类定义时,它处理函数的定义,而不是函数本身。在

代码失败的原因是对isVowel的引用不在函数内,而是在模块范围内。模块中不在函数中的代码会立即执行,因此解释器需要能够根据到目前为止看到的内容来解析任何名称。在

Put the def isVowel definition at top.

您在函数被调用后定义了它。 由于源代码是未编译并在运行时进行解释,因此它不会检查此错误。在

此外,还可以将函数重新定义为

def isVowel(letter):
    if letter.lower() in "aeiou":
        return True
    else:
        return False

函数尚未定义,因此名称“is元音”没有绑定函数:只有在您说“def”时才会发生这种情况。在

解决方案:将代码移到def isVowel(letter)下方。在

相关问题 更多 >

    热门问题