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