Dotcpp  >  编程教程  >  Python模块  >  Python创建和引入模块实例详解

Python创建和引入模块实例详解

点击打开在线编译器,边学边练

我们引入的模块通常有三种类型,一种是系统库中存在的模块,一种是第三方模块,最后一种就是我们自己定义来的模块。当我们在写一个程序的时候,为了避免一个主程序的代码过于复杂,我们会将一些函数或功能写在单独的文件中,然后通过主程序调用这些自己定义的模块,我们自己定义的模块注意扩展名要以.py结尾。

本章节我们通过一个发牌游戏来学习自定义模块,题目为:

4个人玩牌,电脑随机将52张牌(不含大小王)发给4个人,在屏幕上显示每位牌手的牌。

问题分析:

1. 52张牌,按梅花0-12,方块13-25,红桃26-38,黑桃39-51顺序编号并存储在pocker列表中(未洗牌之前)。

2. 定义一个洗牌功能,随机产生两个位置索引,交换两个牌的位置,进行100次随机交换,达到洗牌的目的。

3. 发牌时,交换后pocker列表,按顺序加到四个牌手的列表中。

4. 52张牌发给4个人,每人13张,13轮循环,每次循环发给四个人。

5. 每人发一张牌的动作一样,用函数main实现。

6. 发一张牌的动作可以包含两部分:获取花色,获取数值,分别用get_color和get_value实现。

1. 创建模块

我们可以采用自定义模块来解决上面的问题,首先我们分析一下我们有几个功能要创建模块,洗牌和发牌这些都是可以放在主程序中的,每张牌的花色和数值我们是可以放在模块中的,那么我们就先来创建2个模块来完成这两个功能。

首先完成获取颜色的模块及其函数:

def get_color(n):
    if n<13:
        return '梅花'
    elif n<26:
        return '方块'
    elif n<39:
        return '红桃'
    else:
        return '黑桃'

模块名为getcolor.py。

接下来创建获取值的模块及其函数:

def get_value(n):
    if n==0 or n==13 or n==26 or n==39:
        return 'A'
    elif n==12 or n==25 or n==38 or n==51:
        return 'K'
    elif n==11 or n==24 or n==37 or n==50:
        return 'Q'
    elif n==10 or n==23 or n==36 or n==49:
        return 'J'
    else:
        return n%13

模块名为getvalue.py。

2. 调用模块并完善主程序

调用自己定义的模块,关键代码如下:

from getcolor import get_color
from getvalue import get_value

完整代码如下:

import random
from getcolor import get_color
from getvalue import get_value
n = 52
def gen_pocker(n):
    random.shuffle(n)
    return n
def main():
    List = []  # 代表一副牌,现在表示还没有牌,只是一个牌盒
    for i in range(0, 52):
        List.append(i)  # 按顺序往牌盒中放入52张牌
    List = gen_pocker(List)  # 将牌盒中的牌打乱顺序
    List1 = []  # 定义4个牌手
    List2 = []
    List3 = []
    List4 = []
    for i in range(0, 52):  # 实现发牌
        if i < 13:  # 打乱后的前13张牌发给牌手1,实现牌手1手牌中如何含有花色和数字
            List1.append(get_color(List[i]) + str(get_value(List[i])))
        elif i < 26:
            List2.append(get_color(List[i]) + str(get_value(List[i])))
        elif i < 39:
            List3.append(get_color(List[i]) + str(get_value(List[i])))
        else:
            List4.append(get_color(List[i]) + str(get_value(List[i])))
    print(List)
    print("牌手1", List1)
    print("牌手2", List2)
    print("牌手3", List3)
    print("牌手4", List4)
main()

输出结果为:

[48, 30, 25, 51, 10, 34, 41, 19, 38, 8, 13, 3, 24, 28, 43, 35, 6, 49, 37, 0, 
33, 27, 11, 14, 4, 31, 21, 50, 9, 46, 12, 47, 1, 44, 18, 22, 26, 32, 20, 42, 
45, 7, 17, 36, 29, 2, 15, 40, 39, 5, 16, 23]
牌手1 ['黑桃9', '红桃4', '方块K', '黑桃K', '梅花J', '红桃8', '黑桃2', '方块6', '红桃K', 
'梅花8', '方块A', '梅花3', '方块Q']
牌手2 ['红桃2', '黑桃4', '红桃9', '梅花6', '黑桃J', '红桃Q', '梅花A', '红桃7', '红桃1', 
'梅花Q', '方块1', '梅花4', '红桃5']
牌手3 ['方块8', '黑桃Q', '梅花9', '黑桃7', '梅花K', '黑桃8', '梅花1', '黑桃5', '方块5', 
'方块9', '红桃A', '红桃6', '方块7']
牌手4 ['黑桃3', '黑桃6', '梅花7', '方块4', '红桃J', '红桃3', '梅花2', '方块2', '黑桃1',
 '黑桃A', '梅花5', '方块3', '方块J']

在这个题中,我们采用的是导入模块的第三种方式,直接引入模块的函数功能,如果我们采用第一种导入模式的时候,注意使用方式要加上模块名,例如:

import getcolor
print(getcolor.get_color(2))

一定要注意模块名的添加。

3. 总结

通过这个例子我们学习了怎么去创建自定义模块及模块的使用,自己去练习一下可以学习到这种剖析题目的解题思维,下面几节我们来学习几个常用的内置模块。



本文固定URL:https://www.dotcpp.com/course/269

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Python教程
第一章 Python入门
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 Python函数
第六章 Python面向对象编程
第七章 Python模块
第八章 Python异常处理和程序调试
第九章 Python文件及目录操作
第十章 PythonGUI编程
第十一章 Python进程和线程
第十二章 Python数据库管理
第十三章 Python算法
第十四章 Python爬虫
第十五章 Python实战项目
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)