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函数的基础,我们就暂时讲到这里,后面要是碰到了,鄙人会继续补充,下一个章节,我们将介绍函数的参数,这非常重要。


全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.