Python 学习日记5

Posted aqqb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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: 双端队列,可以快速的从另外一侧追加和推出对象

  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]+    用户名
正则测试

 

以上是关于Python 学习日记5的主要内容,如果未能解决你的问题,请参考以下文章

python学习日记第八天tkinter模块5

python学习日记第八天tkinter模块5

学习日记 | 5.22 [Python3] Python3基础与面向对象

学习日记 | 5.18 [Python3] Python3基础与面向对象

Python学习日记之练习代码

python学习日记