1. 程式人生 > >Python 學習日記5

Python 學習日記5

os模塊 range 字符 TP lis 偏移量 put return sea

一,遞歸函數 

技術分享圖片
 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