当我们运行内部函数调用时,控制流如何跳过外部函数调用,因为它从上到下遍历整个代码?

2024-06-08 04:52:04 发布

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

首先,程序运行外部函数调用并打印消息,然后程序在While loop的条件块中运行内部函数调用,当我们在输入中输入“Yes”时,如您所知,当我们这样做时,控制流进入整个代码的顶部在运行过程中。我的问题是,如果控制流从顶部跳到底部,它如何跳过外部函数调用?你知道吗

def start_code():
    print "Hello Earthian"

start_code()

while True:
    repeat_input = raw_input("Do you want to repeat?")
    if repeat_input == "Yes" or repeat_input == "yes":
        start_code()
    elif repeat_input == "No" or repeat_input == "no":
        print "-------------------------------------------\nGood Bye!\n-------------------------------------------"
        break
    else:
        print "I'm sorry, I could not understand. Please say either Yes or No"

Tags: orno程序程序运行loopinputcode条件
1条回答
网友
1楼 · 发布于 2024-06-08 04:52:04

函数在代码中被写了两次,但这并不意味着函数总是被调用两次。对start_code()的第二个调用永远不会执行,因为它是未激活的条件块的一部分。请看以下片段:

repeat_input = raw_input("Do you want to repeat?")
if repeat_input == "Yes" or repeat_input == "yes":
    start_code()
elif repeat_input == "No" or repeat_input == "no":
    print "..."
    break
else:
    print "I'm sorry, I could not understand. Please say either Yes or No"

首先,程序要求用户输入一些内容,并将他们输入的内容保存到repeat_input。然后,在相同的缩进级别上有三个语句:ifelifelse。这些被称为条件,并且每个条件中的任何代码只有在满足条件时才运行(参见缩进中的区别?这就是我所说的“inside”——对start_code()的第二个调用是insideif)。你知道吗

第一个语句检查repeat_input(保存用户输入的文本的变量)是否等于"Yes""yes"。如果是,则它运行该块中的所有内容,在本例中,它只是函数start_code。你知道吗

第二个语句是elif,代表“elseif”。只有在if语句未被激活的情况下才会执行这一行,在这种情况下,它会检查repeat_input是否等于"No""no"。如果是这样,那么它将在elif块内运行代码print语句和break语句。你知道吗

这些语句中的第三个是else—如果前面的所有ifelif语句都未激活,则此块中的代码将运行—下一个print语句。你知道吗

这三个语句ifelifelse作为一个单元。必须有一个if语句,可以有任意数量的elif语句,并且最多可以在末尾有一个else语句。在任何一个被激活,并且其中的代码被运行之后,程序跳转到else语句中的块之后-在这种情况下,这意味着进入while循环的下一次迭代,它包含了整个东西。你知道吗


因此,总而言之,只有在程序提示用户键入"Yes""yes"时,才运行对start_code()的第二个调用。你知道吗

相关问题 更多 >

    热门问题