ParisGabriel 发表于 2018-7-19 00:29

【Python】人工智能全栈工程师(0基础到精通)教程 第二十课



ParisGabriel



感谢 大家的支持                                全部课程 原文地址 :                                                                           http://www.cnblogs.com/ParisGabriel/tag/Python/ https://images2018.cnblogs.com/blog/1430617/201807/1430617-20180709225751471-608583048.png                                                      

                    每天坚持手写一天一篇 点个订阅吧决定坚持几年 全栈工程师(包含:python、爬虫、Web、人工智能、h5等)       讲完接着 java、黑客攻防 、渗透、                                                               易语言(比较简单学完python基本就会了)、等等到时候再说....IT无止境!   灰常感谢    当个死粉也阔以https://static.52pojie.cn/static/image/smiley/default/mad.gifhttps://static.52pojie.cn/static/image/smiley/default/mad.gif                      
                                                                              Python人工智能从入门到精通

$ pip3 install tensorflow :
  第三方模块 tensorflow 的安装
  电脑必须有网 命令行自动下载安装
dir(模块名):
  查看模块所有属性自定义模块导入
示例:
# 自定义模块的实现方法

def myfac(n):
    print('正在计算', n, '的阶乘')


def mysum(n):
    print("正在计算1+2+3+...+%d的和" % n)


name1 = "Audi"
name2 = "TESLA"

print("mymod模块被加载!")
https://images2018.cnblogs.com/blog/1430617/201807/1430617-20180718224340691-1198333865.png 注意事项:
  自定义模块的文件要求以.py结尾,文件名必须是标识符的规则 导入 语句 import 语句等 搜索块的路径顺序  import mymod
  from mymod import myfac
  from mymod import *
去哪儿找这个mymod.py?
  搜索顺序:
    1. 搜索程序运行时的路径(当前路径)
    2. sys.path 提供的路径sys.path是一个列表,里面放的都是模块的搜索路径
    3. 搜索内建模块

模块的加载过程:
  1. 在模块导入时,模块的所有语句都会执行
  2. 如果一个模块已经导入,则再次导入时不会重新执行模块内的语句
模块的重新加载
  import mymod
  import imp
  imp.reload(mymod) # 重新加载mymod模块模块以导入和执行的过程:
  1. 先搜索相关的路径,找到模块名.py
  2. 判断是否有此模块对应的.pyc文件。如果.pyc比.py文件新,则直接加载.pyc文件
  3. 否则 用模块.py,文件生成.pyc,并加载执行pyc python的编译
  编译 解释执行
  mymod.py --------> mymod.pyc --------> python3  模块-------->编译好的Python3文件--------> Python3解释执行器模块的文档字符串:
  模块内第一个没有赋值给任何变量的字符串称为模块的文档字符串  模块的 __doc__ 属性
    此属性用于绑定模块的文档字符串  模块的 __file__属性
    此属性用于记录模块对应的文件路径名示例:
# 模块的文档字符串:

'''我的自定义模块mymod2

此模块有两个函数
myfac和 mysum
...
'''

def myfac(n):
    '''自定义用来测试用的myfac的文档字符串'''
    print('正在计算', n, '的阶乘')


def mysum(n):
    print("正在计算1+2+3+...+%d的和" % n)


name1 = "Audi"
name2 = "TESLA"

print("mymod模块被加载!")
模块的 __name__属性
  __name__属性 用来记录模块自身名字  作用:
    1. 记录模块名
    2. 用来判断是否为主模块
  说明:
    当此模块为主模块(也就是第一个运行的模块时)运行时, __name__绑定 '__main__'
    当此模块不是主模块时,而是被其它模块导入时,此时 __name__ 绑定模块名    示例:
'''此示例示意 mymod3的 __name__属性的用法'''


def test():
    pass


print("__name__属性绑定的值是:", __name__)


if __name__ == '__main__':
    print("当前mymod3.py 正在以主模块运行")
else:
    print("当前mymod3.py 正在被其它模块导入")
    print("我的模块名是", __name__)
模块的 __all__列表
  模块中的 __all__列表是一个用来存放可导出属性的字符串列表  作用:
    当用 from xxx import *语句导入时,只导入 __all__ 列表内的属性并且只对 from xx import * 有效示例:# __all__属性只对 from import * 语句有效
__all__ = ['hello1', 'name1']


def hello1():
    pass


def hello2():
    pass


def hello3():
    pass


name1 = 'aaaaaa'
name2 = 'aaaaaa'

https://images2018.cnblogs.com/blog/1430617/201807/1430617-20180718231605658-597558185.png模块的隐藏属性
  模块中以'_'开头的属性,在from xxx import * 导入时,将不被导入,通常称这些属性为隐藏属性示例:
此模块在用from mymod5 import *导入时,只能导入:
# f1和 name1
def f1():
    pass


def _f2():
    pass


def __f3():
    pass


name1 = 'aaaaa'
_name2 = 'bbbbb'
随机模块 random
模块名: random
作用:
用于模拟或生成随机输出的模块 随机模块 random说明:random模块是用于模拟或生成随机输出的模块.import random as R
函数名描述
R.random()返回一个
R.uniform(a,b)返回
R.randrange( stop[, step])返回range(start,stop,step)中的随机数
R.choice(seq)从序列中返回随意元素
R.shuffle(seq[, random])随机指定序列的顺序(乱序序列)
R.sample(seq,n)从序列中选择n个随机且不重复的元素
系统模块 sys
[*]运行时系统相关的信息
sys模块的属性
属性描述
sys.path模块搜索路径 path 是当前脚本程序的路径名,否则为 ''
sys.modules已加载模块的字典
sys.version版本信息字符串
sys.version_info版本信息的命名元组
sys.platform操作系统平台名称信息
sys.argv命令行参数 argv 代表当前脚本程序路径名
sys.copyright获得Python版权相关的信息
sys.builtin_module_names获得Python内建模块的名称(字符串元组)
sys模块的函数
函数名描述
sys.exit()退出程序,正常退出时sys.exit(0)
sys.getrecursionlimit()得到递归嵌套层次限制(栈的深度)
sys.setrecursionlimit(n)得到和修改递归嵌套层次限制(栈的深度)


包(模块包) package
  包的定义
  包是将模块以文件夹的组织形式进行分组管理的管理方法
  作用:
    将一系列模块进行分类管理,有利于防止命名冲突
    可以在需要时加载一个或部分模块则不是全部模块
包目录树示例:
  mypack/(包名)
    __init__.py                      (__init__.py 文件)
    menu.py                         (模块)    games/                        (子包名1)
      __init__.py             (__init__.py 文件)
      contra.py                (模块)
      supermario.py      (模块)
      tanks.py                  (模块)    office/                           (子包名2)
      __init__.py            (__init__.py 文件)
      word.py                   (模块)
      excel.py                   (模块)
      powerpoint.py         (模块) __init__.py 文件
__init__.py是常规包内必须存在的文件
__init__.py会在包加载时自动调用  作用:
    1. 编写此包的内容
    2. 在内部填写文档字符串
    3. 在__init__.py文件内可以加载此包所依懒的一些其它模块 包的导入
  同模块的导入规则
  # import 语句
    import 包名 [as 包新名]
    import 包名.模块名 模块新名]
    import 包名.子包名.模块名   # from import语句
    from 包名 import 模块名 [as 模块新名]
    from 包名.子包名 import 模块名
    from 包名.子包名.模块名 import 属性名 属性新名]  # from import *语句
    from 包名 import *
    from 包名.模块名 import *
    ...
  导入包时的索引路径顺序:
    1. 搜索程序的当前路径
    2. sys.path 提供的路径
__init__.py 内的 __all__ 列表
  作用:
    用来记录此包中有哪儿些子包或模块在用from import *语句 时被导入
  说明:
    __all__列表只对 from xxx import *语句起作用包的相对导入:
  包的相对导入是指包内模块的相互导入(不能超过包的最高界限)  语法:
    from 相对路径包或模块 import 属性或模块名
    from 相对路径包或模块 import *
  相对路径
    . 代表当前目录
    .. 代表上一级目录
    ... 代表上二级目录
    .... 以此类推
    注: 相对导入时不能超出包的外部
模块的导入分三种
    import tiem 直接导入模块
    from time import time 导入time模块的time功能
    from mymod import * 导入time模块的所有功能
这里*导入可以直接使用函数不需要加模块名.函数 如果有__all__属性只导入__all__列表里的包也是分三种 差不多 包所导入的是文件夹as 给包或者模块、属性、等 改名
(.)统一代表什么什么下的什么什么
解释执行器就是先把.py文件翻译成二进制码.pyc文件再进行运行(先解释后执行)
  但运模块时自动创建__pycache__ 文件夹 里面放.pyc文件 文档字符串和函数一样
  一般用三引号括起来 写就可以了 第一行是标题 换行 第三行开始写详细内容
__name__属性返回一个字符串 如果返回 __main__代表程序主入口 也就是第一个运行的模块
  否则返回当前模块的名字
__all__ 属性是一个列表 当三种导入方式导入时只导入列表里的其他的不导入
__开头的函数 属性 当三种导入方式导入时不导入_开头的隐藏函数 其他的全导入
__init__.py 是必须存在的文件 不存在 此文件夹就不是包
  里面可以写属性 包的文档字符串导入路径 优先相对路径 其次sys.path路径
  相对路径 就是 当前路径 或 路径名加上模块
  path是系统环境变量列表 相当于全局变量 在任何目录都能调用这个列表里的路径练习:
1. 猜数字游戏
随机生成一个 0~100之间的一个整数,用变量x绑定
让用户输入一个数y,输出猜数字的结果:
1) 如果y大于x则提示: "您猜大了"
2) 如果y小于x则提示: "您猜小了"
3) 如果y等于生成的数x,则提供示用户"恭喜您猜对了 "并退出猜数字
循环重复上述步聚,直到猜对为止。
猜对了,显示用户猜数字的次数,然后退出程序答案:
import random
x = random.randrange(101)
i = 0
while True:
    s = int(input("请输入要猜的数字0~100:"))
    i += 1
    if s > x:
      print("大了")
    elif s < x:
      print("小了")
    else:
      print("猜对了")
      print("猜了%d次" % i)
      break
https://images2018.cnblogs.com/blog/1430617/201807/1430617-20180718234437355-837330111.png这里有个2分算法 100内的猜数字一般不超过7次猜对 10000不超过20次就能猜对练习:
1. 写一个闹钟程序,启动时设置定时时间,
到时间后打印一句"时间到...." 然后退出程序
import time
def time_out():

    h = int(input("please input:"))
    m = int(input("please input:"))
    s = int(input("please input:"))
    d = (h, m, s)
    while True:
      s = time.localtime()
      print('%02d:%02d:%02d' % (s, s, s), end = "\r")
      time.gmtime(1)
      if s >= d:
            print("Time out")
            break
time_out()
https://images2018.cnblogs.com/blog/1430617/201807/1430617-20180718234938779-120711457.pnghttps://images2018.cnblogs.com/blog/1430617/201807/1430617-20180718235036507-1206518565.png2. 模拟斗地主发牌,扑克牌共54张
黑桃('\u2660'), 梅花('\u2663'), 方块('\u2665'), 红桃('\u2666')
A2-10JQK
大王、小王
三个人玩,每人发17张牌,底牌留三张
输入回车, 打印出第1个人的17张牌
输入回车, 打印出第2个人的17张牌
输入回车, 打印出第3个人的17张牌
输入回车, 打印三张底牌 答案:
import random
L = {"大王", "小王"}
range(2, 11)
for x in {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}:
    L.add("\u2660 " + x)
    L.add("\u2663 " + x)
    L.add("\u2665 " + x)
    L.add("\u2666 " + x)
print("共54张牌:", L)
print()
for x in range(3):
    input()
    s = set(random.sample(L, 17))
    if x == 0:
      x = "第一个玩家:"
    elif x == 1:
      x = "第二玩家:"
    elif x == 2:
      x = "第三个玩家:"
    print(x, s)
    L -= s
print()
print("底牌:", L)
https://images2018.cnblogs.com/blog/1430617/201807/1430617-20180718235413511-335037860.png今天的:
3. 修改学生信息管理程序,将原student_info.py 拆分为模块
要求:
1. 主事件循环放在main.py中
2. show_menu 函数放在menu.py中
3. 与学生操作相关的函数放在 student_info.py中还有昨天的:3. 改写之前的学生信息管理程序
  要求添加四个功能:
| 5) 按学生成绩高-低显示学生信息 |
| 6) 按学生成绩低-高显示学生信息 |
| 7) 按学生年龄高-低显示学生信息 |
| 8) 按学生年龄低-高显示学生信息 | 突然发现欠了键盘好多代码 0.0已 吐血身亡 下次补上 太晚了嘤嘤嘤.........

tenaiai 发表于 2018-7-19 00:36

感谢分享

向往的歌 发表于 2018-7-19 07:32

给楼主点赞!!!

hsppc 发表于 2018-7-19 07:52

支持楼主!

君月栩 发表于 2018-7-19 11:06

良心楼主,感谢分享

superlaomao 发表于 2018-7-19 17:21

楼主做笔记用的什么软件啊???看着排版挺舒服的

A00 发表于 2018-7-19 19:31

给楼主点赞!

zxcuper 发表于 2018-7-19 21:42

给楼主点赞!

iirf 发表于 2018-7-19 22:24

谢谢楼主分享!!!!

H壹棵松 发表于 2018-7-20 20:29

感谢分享
页: [1] 2
查看完整版本: 【Python】人工智能全栈工程师(0基础到精通)教程 第二十课