python函数基础,游戏实例的函数封装
上一节介绍了python函数的概念、作用功能,这一节,我们将介绍python函数的一些基础,致力于让大家通过本节的学习能够写出一个完整的可以调用的python函数,并将之前讲述过的游戏实例进行函数的封装。
python函数的六个组成部分
python函数由六个部分组成,其一般模式如下:
def 函数名(参数1, 参数2, ...) :
处理数据的代码块
return 返回值
如上代码,python的函数有六个部分:
- 关键字“def”:python函数都是用关键字“def”声明,可以将其理解为define的缩写;
- 函数名:如果变量一样,函数也必须要有一个名称,注意与python内置的函数名区别开,比如求和的名称就不要用sum()来命名;
- 参数:python函数的参数紧跟在函数名之后,用括号包围,一个以上的参数用英文的逗号“,”隔开,理论上参数可以无限多个,但不建议传递过多的参数,有时候我们可以将参数设计在list列表里头,以减少参数的数量;
- 英文冒号:这个冒号是必须的,否则将发生错误,有了冒号后,在比较集成的IDE编辑器里头,就可以自动缩进空格;
- 处理数据的代码块:这是python函数最主要的部分,就是我们的数据通过参数的形式传递进来后,要怎么处理,就是通过这部分的代码块来完成的;
- return:函数的返回值(不是必须的),而且函数一旦执行到return这个语句之后,函数体后面的代码将会被忽略,就像break关键词一样,不同的是,break终止程序的同时并不返回值。
一个完整的简单的python函数
我们先来写一个简单到不能简单的python函数,比如写一个求两个数的和的函数。
示例
大家可以打开jupyter notebook
In[1]:
def addNum(a, b):
s = a + b
return s
python函数的调用
python函数的调用要与python类的方法区别开来,我们前面接触过list列表的时候,用过对列表元素进行排序的方法sort(),比如列表a的元素正向排序可以用a.sort(),而函数却不同,如下示例:
In[2]: x,y = 1,8 #声明两个int型变量
s = addNum(x,y) #调用函数,记得传入参数,否则会发生错误
print(s)
9
print(addNum(x,y) #可以直接输出,而不必用变量来存储,这个示例就是直接将函数的返回值当成函数的参数使用
9 #如果函数没有返回值,该怎么调用呢,接着往下看下面游戏的函数封装
游戏实例的函数封装
还记得我们在python的while循环的那一节当中开发了一个简单的猜字游戏实例吗?在示例解析当中,我们提到了游戏代码中有一个bug,不知道大家尝试修复了没有,现在鄙人就将修复完的代码发布到这里:
import random
md = random.randint(0,100)
start = 0
end = 100
inp = int(input('从%s到%s猜一个数字:' %(start, end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字:' %(start, end)))
while start <= inp <= end:
if inp < md:
start = inp
inp = int(input('从%s到%s猜一个数字:' %(start,end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字:' %(start, end)))
elif inp > md:
end = inp
inp = int(input('从%s到%s猜一个数字:' %(start,end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字:' %(start, end)))
else:
print('恭喜你中奖了')
break
————————————————————————————————————
从0到100猜一个数字:-1
请重新输入从0到100猜一个数字:101
请重新输入从0到100猜一个数字:5
从5到100猜一个数字:3
请重新输入从5到100猜一个数字:2
请重新输入从5到100猜一个数字:101
请重新输入从5到100猜一个数字:6
从6到100猜一个数字:66
从6到66猜一个数字:55
从6到55猜一个数字:66
请重新输入从6到55猜一个数字:5
请重新输入从6到55猜一个数字:35
从6到35猜一个数字:30
从6到30猜一个数字:20
从20到30猜一个数字:25
从25到30猜一个数字:26
从26到30猜一个数字:27
从27到30猜一个数字:28
恭喜你中奖了
示例解析
上面代码修复的bug是,当我们输入的值超过[start, end]这个区间的时候,程序就会终止,修改之后就不会了。现在,我们要将这个游戏进行封装成一个函数,好可以重复使用。
游戏实例的函数封装
我们将猜字游戏封装成一个没有返回值的函数,没有返回值的函数的调用方法如下:
def guessNum(x, y):
import random
md = random.randint(x,y)
start = x
end = y
inp = int(input('从%s到%s猜一个数字:' %(start, end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字:' %(start, end)))
while start <= inp <= end:
if inp < md:
start = inp
inp = int(input('从%s到%s猜一个数字:' %(start,end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字:' %(start, end)))
elif inp > md:
end = inp
inp = int(input('从%s到%s猜一个数字:' %(start,end)))
while start > inp or end < inp:
inp = int(input('请重新输入从%s到%s猜一个数字:' %(start, end)))
else:
print('恭喜你中奖了')
break
guessNum(0,100) #调用函数,因为没有返回值,所以不必用一个变量来存储;
——————————————————————————————————————————
从0到100猜一个数字:-1
请重新输入从0到100猜一个数字:66
从0到66猜一个数字:30
从30到66猜一个数字:50
从50到66猜一个数字:90
请重新输入从50到66猜一个数字:55
从55到66猜一个数字:60
从55到60猜一个数字:56
恭喜你中奖了
如果我们像继续玩这个猜字游戏,可以直接调用guessNum(x,y)并传入参数,比如0,1000。如上面的游戏输出,由此可见python函数重复使用和高效使用的价值。
好了,python函数的基础,我们就暂时讲到这里,后面要是碰到了,鄙人会继续补充,下一个章节,我们将介绍函数的参数,这非常重要。