无门槛速学编程Python小短课,爱

北京看白癜风效果好医院 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/ffxbdf/

爱笑的男孩运气有点差

别让标题带偏了,我们藉此来聊下函数的参数化而已。

还是以“找宝藏”这个小程序为例,isLucky是我们封装的一个函数,实现了”判断是否好运“。假设isLucky的算法需要判断性别来达成不同的逻辑,这怎么办?

那就给函数传入参数。

代码:

#!/usr/bin/python

#-*-coding:UTF-8-*-

importrandom

#实现“判断是不是比神兽弱

defisWeakerThanBeast():

iRan=random.randint(1,10)

ifiRan=9:

returnTrue

else:

returnFalse

#实现”判断是否好运“

defisLucky(bIsBoy):

#根据性别,男生1/10概率运气好,女生1/2概率运气好

ifbIsBoy:

iMax=10

else:

iMax=2

iRan=random.randint(1,iMax)

ifiRan=1:

returnTrue

else:

returnFalse

#实现“找宝藏”

deffindTreasure():

bBoy=True

iCount=0

whileTrue:

iCount=iCount+1

#判断是不是比神兽弱

ifisWeakerThanBeast():

continue

#判断是否好运

ifisLucky(bBoy):

break

print(str(iCount)+次找到宝藏)

#执行“找宝藏”需求

findTreasure()

以上,isLucky函数定义多了一个“bIsBoy”,而isLucky函数使用传入一个”bBoy“,这就是参数化的体现。一般,我们称”bIsBoy“为形参,”bBoy“为实参。有些小萌新可能有点懵,bIsBoy和bBoy对不上号呢?

我们这样来梳理一下,bBoy大家都知道,之前也讲过,这就是一个普通变量而已;再来看下bIsBoy,暂时忘记它和bBoy的关联,你会发现其实它也只是函数内一个普通变量而已。

小萌新可以这样理解,bIsBoy只是bBoy的一个别名,实质上在Python世界里,他们代表的是同个变量。

再举个例子,隔壁村的阿牛,在村里大家都叫他阿牛,后来他进城打工,来到一间大发廊做发型师,发廊的同事和顾客都叫他Tony老师。

Tony老师就是阿牛的一个华丽的别名。

再来看bIsBoy和bBoy的关联,在这个例子里,bIsBoy是形参(形式上的参数),bBoy是实参(实质上的参数),在Python世界里,形参相当于实参在函数内的别名。

假设isLucky的算法不但需要判断性别,也需要判断是否爱笑,这怎么办?

那就给函数传多一个参数,传两个参数。

代码:

#!/usr/bin/python

#-*-coding:UTF-8-*-

importrandom

#实现“判断是不是比神兽弱

defisWeakerThanBeast():

iRan=random.randint(1,10)

ifiRan=9:

returnTrue

else:

returnFalse

#实现”判断是否好运“

defisLucky(bIsBoy,bLoveSmile):

#爱笑男孩运气好的概率是1/,不爱笑男孩运气好的概率是1/10

#爱笑女孩运气好的概率是百分百,不爱笑女孩运气好的概率是1/2

ifbIsBoy:

ifbLoveSmile:

iMax=

else:

iMax=10

else:

ifbLoveSmile:

iMax=1

else:

iMax=2

iRan=random.randint(1,iMax)

ifiRan=1:

returnTrue

else:

returnFalse

#实现“找宝藏”

deffindTreasure():

bBoy=True

bSmile=True

iCount=0

whileTrue:

iCount=iCount+1

#判断是不是比神兽弱

ifisWeakerThanBeast():

continue

#判断是否好运

ifisLucky(bBoy,bSmile):

break

print(str(iCount)+次找到宝藏)

#执行“找宝藏”需求

findTreasure()

可以看到爱笑的女孩运气果然是好,而爱笑的男孩运气就有点差了。

需要更多参数,也同此理。

函数还有很多琐碎的细节,但对于小萌新而已,大部分都可暂时不去理会。目前各位掌握的函数知识已经可以应对八成的情景,重要的是理解本质,掌握常规使用,而不需囿于细节。




转载请注明:http://www.aierlanlan.com/tzrz/4061.html