python面向对象编程:创建和引入模块实例详解

2022-07-3021:38:25编程语言入门到精通Comments952 views字数 2943阅读模式

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

本章节我们通过一个发牌游戏来学习自定义模块,题目为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

4个人玩牌,电脑随机将52张牌(不含大小王)发给4个人,在屏幕上显示每位牌手的牌。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

问题分析:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

1. 52张牌,按梅花0-12,方块13-25,红桃26-38,黑桃39-51顺序编号并存储在pocker列表中(未洗牌之前)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

2. 定义一个洗牌功能,随机产生两个位置索引,交换两个牌的位置,进行100次随机交换,达到洗牌的目的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

3. 发牌时,交换后pocker列表,按顺序加到四个牌手的列表中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

4. 52张牌发给4个人,每人13张,13轮循环,每次循环发给四个人。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

5. 每人发一张牌的动作一样,用函数main实现。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

6. 发一张牌的动作可以包含两部分:获取花色,获取数值,分别用get_color和get_value实现。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

 1. 创建模块文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

我们可以采用自定义模块来解决上面的问题,首先我们分析一下我们有几个功能要创建模块,洗牌和发牌这些都是可以放在主程序中的,每张牌的花色和数值我们是可以放在模块中的,那么我们就先来创建2个模块来完成这两个功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

首先完成获取颜色的模块及其函数:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

1
2
3
4
5
6
7
8
9
def get_color(n):
    if n<13:
        return '梅花'
    elif n<26:
        return '方块'
    elif n<39:
        return '红桃'
    else:
        return '黑桃'

模块名为getcolor.py。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

接下来创建获取值的模块及其函数:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

1
2
3
4
5
6
7
8
9
10
11
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。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

 2. 调用模块并完善主程序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

        调用自己定义的模块,关键代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

1
2
from getcolor import get_color
from getvalue import get_value

完整代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import random
from getcolor import get_color
from getvalue import get_value
= 52
def gen_pocker(n):
    random.shuffle(n)
    return n
def main():
    List = []  # 代表一副牌,现在表示还没有牌,只是一个牌盒
    for in range(052):
        List.append(i)  # 按顺序往牌盒中放入52张牌
    List = gen_pocker(List)  # 将牌盒中的牌打乱顺序
    List1 = []  # 定义4个牌手
    List2 = []
    List3 = []
    List4 = []
    for in range(052):  # 实现发牌
        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()

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

1
2
3
4
5
6
7
8
9
10
11
[483025511034411938813324284335649370
3327111443121509461247144182226322042
457173629215403951623]
牌手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']

在这个题中,我们采用的是导入模块的第三种方式,直接引入模块的函数功能,如果我们采用第一种导入模式的时候,注意使用方式要加上模块名,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

1
2
import getcolor
print(getcolor.get_color(2))

一定要注意模块名的添加。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

  3. 总结文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

通过这个例子我们学习了怎么去创建自定义模块及模块的使用,自己去练习一下可以学习到这种剖析题目的解题思维,下面几节我们来学习几个常用的内置模块。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26225.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26225.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定