Python 学习日记5

一,递归函数 

 1 #在列表l中,想要找到其中一个值,二分法可以大大节省查询时间
 2 l=[2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
 3     #如果想找到66 的位置,而又不让使用index(66)
 4 def search(num,l,start=None,end=None):
 5     start = start if start else 0
 6     end = end if end is None else len(l) - 1
 7     mid = (end - start)//2 + start
 8     if start > end:
 9         return None
10     elif l[mid] > num :
11         return search(num,l,start,mid-1)
12     elif l[mid] < num:
13         return search(num,l,mid+1,end)
14     elif l[mid] == num:
15         return mid
16 
17 
18 #二分法只能查找有序的数列
二分法查找
menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

menu
三级菜单
def threeLM(dic):
    while True:
        for k in dic:print(k)
        key = input('input>>').strip()
        if key == 'b' or key == 'q':return key
        elif key in dic.keys() and dic[key]:
            ret = threeLM(dic[key])
            if ret == 'q': return 'q'

threeLM(menu)

递归函数实现三级菜单
使用递归函数

二,模块

概念:一个模块就是包含了python定义和声明的文件

常用模块,分为四个通用类别: 

  1 使用python编写的代码(.py文件)

  2 已被编译为共享库或DLL的C或C++扩展

  3 包好一组模块的包

  4 使用C编写并链接到python解释器的内置模块

在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。

  1.namedtuple: 生成可以使用名字来访问元素内容的tuple

  2.deque: 双端队列,可以快速的从另外一侧追加和推出对象

扫描二维码关注公众号,回复: 534150 查看本文章

  3.Counter: 计数器,主要用来计数

  4.OrderedDict: 有序字典

  5.defaultdict: 带有默认值的字典

三,时间模块

  

表示时间的三种方式

在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:

  1 时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

  2 格式化的时间字符串(Format String): ‘1999-12-06’

%y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59)
常用时间表示

  3 元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

格式之间的转化

四,random模块

import random

def v_code():

    code = ''
    for i in range(5):

        num=random.randint(0,9)
        alf=chr(random.randint(65,90))
        add=random.choice([num,alf])
        code="".join([code,str(add)])

    return code

print(v_code())
生成随机数列

  os模块是与操作系统交互的一个接口

  sys模块是与python解释器交互的一个接口

五,re模块

  在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
  字符分为很多类,比如数字、字母、标点等等。

 贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?x

就是取前面任意长度的字符,直到一个x出现
^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+    网址URL
\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}   邮箱
\d{17}[\d|x]|\d{15}    身份证号
[A-Za-z0-9_\-\u4e00-\u9fa5]+    用户名
正则测试

猜你喜欢

转载自www.cnblogs.com/AQQB/p/9026947.html