跳转到内容

Nimrod 编程/IfExtended

来自维基教科书,开放的书籍,面向开放的世界

我们已经知道如何充分利用if命令,现在是继续学习的时候了。让我们再举一个奴隶的例子。我们希望我们的奴隶在没有咖啡和有咖啡的时候去煮咖啡。但你知道我们的奴隶很笨,不会告诉我们他不能煮咖啡,那怎么办呢?我们可以考虑这样做

if theresCoffee(): makeSomeCofee()

if not theresCofee(): echo ("I couldn't make coffee")

嗯,这将奏效,但我对此并不满意,如果我们更改了第一个条件,你也应该更改第二个条件(在编程中,更改越少越好),而且它增加了不必要的混乱,所以我建议这样做

if theresCoffee(): makeSomeCofee()

else: echo ("I couldn't make coffee")

因此,我们在这里所做的是添加我们称之为else子句的内容,该子句的作用是在if失败时执行它包含的代码。与if相反,它没有条件,因为它总是被执行(当if失败时,请记住)。

因此,它将始终执行某些操作,无论是if内部的代码还是else内部的代码。

我还有更多关于这方面的内容要教你,所以让我们回到奴隶的例子。我们的奴隶向我们报告我们没有咖啡,但让我们更进一步,因为我们家附近(或豪宅,毕竟我们已经有了奴隶:))有一家咖啡店,我们希望他/她去买咖啡,前提是我们有足够的钱

if theresCoffee(): makeSomeCoffee()

elif theresEnoughMoney():

  buyCoffee()

  makeSomeCoffee()

else: 
  echo ("I couldn't make coffee")

嗯,现在我们有两个奇怪的东西,elif东西和if之后有两个动作(到目前为止我们只有一个)。我们将把后面留到下一章。因此,elif这个词是else和if的总和(实际上,elif的意思是ELse IF),所以它所做的是在满足条件的情况下执行elif内部的动作。最后一段代码的含义是:如果有足够的咖啡就煮一些咖啡,如果没有,但有足够的钱,就买咖啡并煮一些咖啡,最后,如果没有足够的钱和咖啡,就报告奴隶无法煮咖啡。如果你想知道elif和else子句在这里有多重要,下面是代码,没有它们(将elif和else翻译成if)

if theresCoffee(): makeSomeCoffee()

if not theresCoffee() and theresEnoughMoney():

  buyCoffee()

  makeSomeCoffee()

if not theresCoffee() and not theresEnoughMoney(): 

  echo ("I couldn't make coffee")

正如你所看到的,我们只能使用if,这个程序的行为与没有if的程序完全一样。现在,你在这里失去的是可读性(这是非常重要的,因为据说人们只写一次代码,却要读很多次),这里还违反了编程的隐式规则:尽可能少地重复自己,之所以这样,是因为如果你想更改像这个例子中的if子句这样的东西,而你又到处都有它,即使你可以替换它,最好不要这样做,因为替换可能会让你玩一些不好的笑话。

华夏公益教科书