Python中main函数调用is_valid_input函数无法正常运行求助
问题原因
Python为解释型语言,代码会自上而下逐行执行,你当前的代码顺序导致调用is_valid_input()时,该函数还没有被解释器加载:
- 你先定义了
main()函数,内部引用了is_valid_input - 紧接着执行
if __name__ == "__main__"判断触发main()调用,此时is_valid_input的定义写在调用逻辑之后,解释器还未读取到该函数的定义,就会抛出NameError类错误。 - 你直接调用该函数能正常运行的场景,是因为调用语句写在了函数定义之后,不存在未定义的问题。
解决方案
调整代码顺序,把is_valid_input()函数的定义放在main()函数以及触发调用逻辑之前即可,修改后参考代码如下:
def is_valid_input(): """ this function will check if the the guess is ok :param letter_guesses: the user's guess :type letter_guesses: str :return: True if the guess is complies with the rules and False if not :rtype: bool """ letter_guessed = input("please guess a letter").lower() # 额外提示:代码中的import string未被使用,可直接删除 if letter_guessed.isalpha() and len(letter_guessed) == 1: return True else: return False def main(): # 可以自行添加对返回结果的处理逻辑,示例为打印返回值 print(is_valid_input()) if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者shalev haba
相关产品推荐
相关产品推荐

