无法在while循环中执行函数

时间:2016-01-23 17:15:23

标签: python function input while-loop

我在while循环中有以下代码:

while True:
    user_input = input("y or n")
    if user_input == "y":
        yes()
        break
    if user_input == "n":
        no()
        break

def yes():
    print("yes")

def no():
    print("no")

当我输入" y"时,会出现此消息,导致无法执行该功能。

NameError: name 'yes' is not defined

这是为什么?我怎么解决呢?

2 个答案:

答案 0 :(得分:2)

您必须在之前定义函数yes()no()

像这样:

def yes():
    print("yes")

def no():
    print("no")

while True:
    user_input = input("y or n")
    if user_input == "y":
        yes()
        break
    if user_input == "n":
        no()
        break

这样可以正常工作。

答案 1 :(得分:1)

Python从上到下执行代码,在遇到def语句时创建函数对象。当它开始执行您的while循环时,它还没有到达您的def yes():行,因此函数尚不存在

while循环之前将功能移至顶部。

或者,将循环移动到另一个函数,并在 yesno函数定义之后调用新函数