首先,程序运行外部函数调用并打印消息,然后程序在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"
函数在代码中被写了两次,但这并不意味着函数总是被调用两次。对
start_code()
的第二个调用永远不会执行,因为它是未激活的条件块的一部分。请看以下片段:首先,程序要求用户输入一些内容,并将他们输入的内容保存到
repeat_input
。然后,在相同的缩进级别上有三个语句:if
、elif
和else
。这些被称为条件,并且每个条件中的任何代码只有在满足条件时才运行(参见缩进中的区别?这就是我所说的“inside”——对start_code()
的第二个调用是inside的if
)。你知道吗第一个语句检查
repeat_input
(保存用户输入的文本的变量)是否等于"Yes"
或"yes"
。如果是,则它运行该块中的所有内容,在本例中,它只是函数start_code
。你知道吗第二个语句是
elif
,代表“elseif”。只有在if
语句未被激活的情况下才会执行这一行,在这种情况下,它会检查repeat_input
是否等于"No"
或"no"
。如果是这样,那么它将在elif
块内运行代码print
语句和break
语句。你知道吗这些语句中的第三个是
else
—如果前面的所有if
和elif
语句都未激活,则此块中的代码将运行—下一个print
语句。你知道吗这三个语句
if
、elif
和else
作为一个单元。必须有一个if
语句,可以有任意数量的elif
语句,并且最多可以在末尾有一个else
语句。在任何一个被激活,并且其中的代码被运行之后,程序跳转到在else
语句中的块之后-在这种情况下,这意味着进入while
循环的下一次迭代,它包含了整个东西。你知道吗因此,总而言之,只有在程序提示用户键入
"Yes"
或"yes"
时,才运行对start_code()
的第二个调用。你知道吗相关问题 更多 >
编程相关推荐