5)基礎模塊和上節回顧


                    

圖片1.png圖片2.png

圖片3.png

圖片4.png

 

 

#遞歸:

#在函數的內部調用本身-----遞歸
#遞歸的最大深度:998
#小例子
#猜年齡
#alex多大了,alex比wusir 大兩歲   40 +2 +2
#wusir多大了,wusir比金老闆大兩歲  40+2
#金老闆多大了, 40
# age(1)
# n = 1 age(2)+2
# n = 2 age(3)+2
# n = 3 age(4) = 40

def age(n):
    if n ==3:
        return 40
    else:
       return age(n+1)+2
print(age(1))html


# #n = 1
# def age(1):
#     if 1 ==3:
#         return 40
#     else:
#         age(2)+2
# #n=2
# def age(2):
#     if 2 ==3:
#         return 40
#     else:
#         age(3)+2
# #n = 3
# def age(3):
#     if 3 ==3:
#         return 40python

 

 

 

 

圖片5.png 

圖片6.png

 圖片7.png

 圖片8.png

l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]


def cal(l,num = 66):
    length = len(l)
    mid = length//2
    if num > l[mid]:
        l = l[mid+1:]
        cal(l,num)
    elif num < l[mid]:
        l = l[:mid]
        cal(l,num)
    else:
        print('找到了',l[mid],mid)
cal(l,66)正則表達式

 

 

 

 

 

l =[2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能變
def cal(l,num,start,end):
    mid = (end -start) //2 +start #0 25-1 /2   12
    if l[mid] >num:
        start =0
        end = mid -1
        cal(l,num,start,mid-1)
    elif l[mid] < num:  #13 24
        start = mid+1
        end= len(l) -1
        cal(l,num,mid+1,end)
    else:
        print('找到了',mid,l[mid])
cal(l,66,0,len(l))
print(l.index(66))shell

 

 圖片9.png

不能算出不存在的數字bash

l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能變
def cal(l,num,start,end):
    if start <=end:
        mid = (end -start) //2 +start #0 25-1 /2   12
        if l[mid] >num:
            # start =0
            # end = mid -1
            cal(l,num,start,mid-1)
        elif l[mid] < num:  #13 24
            # start = mid+1
            # end= len(l) -1
            cal(l,num,mid+1,end)
        else:
            print('找到了',mid,l[mid])
    else:
        print('沒找到')
cal(l,60,0,len(l))app

 


圖片10.png改爲returndom

l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能變
def cal(l,num,start,end):
    if start <=end:
        mid = (end -start) //2 +start #0 25-1 /2   12
        if l[mid] >num:
            # start =0
            # end = mid -1
            return cal(l,num,start,mid-1)
        elif l[mid] < num:  #13 24
            # start = mid+1
            # end= len(l) -1
            return cal(l,num,mid+1,end)
        else:
            return mid
    else:
        return '沒找到'
print(cal(l,66,0,len(l)))ide

 

 

 圖片11.png

修改參數:函數

l = [2,3,4,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#列表不能變
def cal(l,num,start=0,end=None):
    # if end is None:end = len(l)-1
    end = len(l) -1 if end is None else end
    if start <=end:
        mid = (end -start) //2 +start #0 25-1 /2   12
        if l[mid] >num:
            # start =0
            # end = mid -1
            return cal(l,num,start,mid-1)
        elif l[mid] < num:  #13 24
            # start = mid+1
            # end= len(l) -1
            return cal(l,num,mid+1,end)
        else:
            return mid
    else:
        return '沒找到'
print(cal(l,66))ui

 

 

 

 圖片12.png

 

模塊:

 

 

#模塊就是 py文件
#特色,寫好了,但不直接使用的功能

#爲何這些模塊不能直接使用要先導入在使用
#經常使用的和某個操做相關的 更具相關性分類

#分紅不一樣模塊
#三種:內置、擴展、自定義三種模塊

 

 

#!/usr/bin/env python
#coding:utf-8

import collections
d = collections.OrderedDict()
print(d)
d['電腦']=1000
d['蘋果'] = 10
print(d['電腦'])
for i in d:
    print(i,d[i])

 

圖片13.png 

 圖片14.png



from  collections import namedtuple
lxf = namedtuple('point',['x','y'])
p = lxf(1,2)
print(p.x)
print(p.y)

圖片14.png

from  collections import namedtuple
Card = namedtuple('card',['rank','suit'])
c = Card('2','紅心')
print(c.rank,c.suit)#2 紅心

 

 

雙關隊列deque

圖片15.png 

from  collections import deque
q = deque()
q.append(1)
q.append(2)
q.append(3)
q.append(4)
q.appendleft('a')
print(q.popleft()) #a
print(q.pop())#4
print(q)

圖片16.png 

Time模塊:

%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

%a 本地簡化星期名稱

%A 本地完整星期名稱

%b 本地簡化的月份名稱

%B 本地完整的月份名稱

%c 本地相應的日期表示和時間表示

%j 年內的一天(001-366

%p 本地A.M.P.M.的等價符

%U 一年中的星期數(00-53)星期天爲星期的開始

%w 星期(0-6),星期天爲星期的開始

%W 一年中的星期數(00-53)星期一爲星期的開始

%x 本地相應的日期表示

%X 本地相應的時間表示

%Z 當前時區的名稱

%% %號自己

 

import time
print(time.time()) #時間戳
print(time.localtime())#結構化時間
print(time.strftime('%Y-%m-%d %H:%M:%S'))#格式化時間

 

import time
print(time.time())#時間戳時間

#格式化時間,用字符串表示的時間
s = time.strftime('%Y-%m-%d %H:%M:%S')
print(s)
print(time.strftime('%x'))

#結構化時間

print(time.localtime())


s = time.localtime()
#時間戳<--結構化-->格式化的時間
print(s.tm_year)

 

一、接下來將時間戳時間轉換成結構化的時間:

#!/usr/bin/env python
#coding:utf-8
import time
print(time.time())#1525756410.7670994
print(time.localtime(1500000000))#time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195
print(time.localtime(1600000000))#time.struct_time(tm_year=2020, tm_mon=9, tm_mday=13, tm_hour=20, tm_min=26, tm_sec=40, tm_wday=6, tm_yday=257

print(time.gmtime(1600000000))#倫敦的時間

 

二、結構化轉換成格式化時間:

str_time = time.gmtime(1600000000)  #倫敦時間
print(time.strftime('%Y-%m-%d %H:%M:%S',str_time))
str_time = time.localtime(1600000000)#當前時間
print(time.strftime('%Y-%m-%d %H:%M:%S',str_time))

 

 

 

三、格式化時間--》結構化時間--》時間戳時間

 

'2018-05-12 13:35:33'
ss = '2018-05-12 13:35:33'
ret = time.strptime(ss,'%Y-%m-%d %H:%M:%S')#time.struct_time(tm_year=2018, tm_mon=5, tm_mday=12, tm_hour=13, tm_min=35, tm_sec=33, tm_wday=5
print(ret)

print(time.mktime(ret))#1526103333.0

 

import time
四、#時間戳轉化成格式化的使用
print(time.time())#時間戳
times = time.localtime(1525759883.4262004)#結構化時間
print(time.strftime("%Y-%m-%d",times))#結構化時間---》格式化時間

 

 

 

其餘的模塊:

圖片17.png 

 

Random模塊:

import random
#小數

print(random.random())#0-1之間的小數
print(random.uniform(1,4))#0-4之間的小數

#整數

print(random.randint(1,3))#0\2\3的隨機數
print(random.randrange(1,10)) #1-9的隨機數不包括10

 

#隨機返回
print(random.choice([1,'23',[4,5]]))# 隨機返回一個1或者23或者[4,5]
print(random.sample([1,'23',[4,5]],2))#列表元素任意2個組合[[4, 5], '23']

 

 

 

 

#驗證碼:
import random
s = ''
for i in range(4):
   s+= str(random.randint(0,9))
print(s)

#字母帶數字

import random
def v_code():
    code = ''
    for i in range(5):
        num = random.randint(0,9)
        alf = chr(random.randint(65,90))#能夠換成97,122
        add = random.choice([num,alf])
        code= ''.join([code,str(add)])
    return code
print(v_code())

 

 

#數字、字母
#chr內置方式
num = random.randint(65,90)
print(chr(num))
num = random.randint(97,122)
print(chr(num))

 

#帶數字大小寫字母驗證

import random

def func():
    id = ''
    for i in range(6):
        num = random.randint(65,90)
        alpha1 = chr(num)
        num2 = random.randint(97,122)
        alpha2 = chr(num2)
        num3 = str(random.randint(0,9))
        s = random.choice([alpha1,alpha2,num3])
        id = ''.join([id,str(s)])
    return id
print(func())

 

 

 

SYS模塊:

 

import sys    #python解釋器
#sys.path  環境變量
#sys.argv  腳本執行
#sys.modules 存放了導入的模塊的路徑
#sys.exit()  退出

print(sys.path) #['E:\\PyCharm\\day5', 'E:\\PyCharm', 'E:\\python\\python36.zip', 'E:\\python\\DLLs', 'E:\\python\\lib', 'E:\\python', 'E:\\python\\lib\\site-packages']

 

一個模塊是否能夠被導入,全看是否是在sys.path包含的路徑

圖片18.png 

 

 

經過腳本:

import sys
print(sys.argv)
if sys.argv[1] == 'zlex' and sys.argv[2] == 'zlex3714':
    print('keyizhixing')
else:
    sys.exit()

 

圖片19.png 

Os模塊:

 

 

 

 

 

 

1 os.getcwd() 獲取當前工做目錄,即當前python腳本工做的目錄路徑 

2 os.chdir("dirname")  改變當前腳本工做目錄;至關於shellcd 

3 os.curdir  返回當前目錄: ('.') 

4 os.pardir  獲取當前目錄的父目錄字符串名:('..') 

5 os.makedirs('dirname1/dirname2')    可生成多層遞歸目錄 

6 os.removedirs('dirname1')    若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪除,依此類推 

7 os.mkdir('dirname')    生成單級目錄;至關於shellmkdir dirname 

8 os.rmdir('dirname')    刪除單級空目錄,若目錄不爲空則沒法刪除,報錯;至關於shellrmdir dirname 

9 os.listdir('dirname')    列出指定目錄下的全部文件和子目錄,包括隱藏文件,並以列表方式打印

10 os.remove()  刪除一個文件

11 os.rename("oldname","newname")  重命名文件/目錄

12 os.stat('path/filename')  獲取文件/目錄信息

13 os.sep    輸出操做系統特定的路徑分隔符,win下爲"\\",Linux下爲"/"

14 os.linesep    輸出當前平臺使用的行終止符,win下爲"\t\n",Linux下爲"\n"

15 os.pathsep    輸出用於分割文件路徑的字符串

16 os.name    輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'

17 os.system("bash command")  運行shell命令,直接顯示

18 os.environ  獲取系統環境變量

19 os.path.abspath(path)  返回path規範化的絕對路徑

20 os.path.split(path)  path分割成目錄和文件名二元組返回

21 os.path.dirname(path)  返回path的目錄。其實就是os.path.split(path)的第一個元素22 os.path.basename(path)  返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素

23 os.path.exists(path)  若是path存在,返回True;若是path不存在,返回False

24 os.path.isabs(path)  若是path是絕對路徑,返回True

25 os.path.isfile(path)  若是path是一個存在的文件,返回True。不然返回False

26 os.path.isdir(path)  若是path是一個存在的目錄,則返回True。不然返回False

27 os.path.join(path1[, path2[, ...]])  將多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略

28 os.path.getatime(path)  返回path所指向的文件或者目錄的最後存取時間

29 os.path.getmtime(path)  返回path所指向的文件或者目錄的最後修改時間

 

https://docs.python.org/2/library/sys.html?highlight=sys#module-sys

圖片20.png 

#!/usr/bin/env python
#coding:utf-8
getcwd 顯示當前路徑

Chdir 切換目錄到其餘目錄
import os
print(os.getcwd())  #E:\PyCharm\day5
os.chdir(r'E:\PyCharm')
print(os.getcwd()) #E:\PyCharm

 

圖片21.png

 圖片22.png

import os
ret = os.popen('dir').read()
print(ret)# 驅動器 E 中的卷是 軟件
 #卷的序列號是 81D7-5D2B

 #E:\PyCharm\day5 的目錄

 

 

 

import os
print(os.path.abspath('模塊.py'))#E:\PyCharm\day5\模塊.py
print(os.path.dirname(r'E:/PyCharm/day5/模塊.py'))#E:/PyCharm/day5
print(os.path.dirname(r'E:/PyCharm/day5'))#E:/PyCharm
print(os.path.split(r'E:/PyCharm/day5/模塊.py'))#('E:/PyCharm/day5', '模塊.py')
print(os.path.basename(r' E:/PyCharm/day5/模塊.py'))#模塊.py

import os
print(os.path.join(r'E:\\','GG','BB'))

 

ret = os.listdir(r'E:/PyCharm/day5')
print(ret)#['log', 'ss.py', '__pycache__', '模塊.py']


 

#算文件夾的大小:
import os
print(os.path.getsize(r'E:/PyCharm/day5/模塊.py'))


import os
ret = os.listdir(r'E:/PyCharm/day5')
print(ret)
sum =0
for path in ret:
    if os.path.isfile(path) is True:
        sum += os.path.getsize(path)
print(sum)



圖片23.png

 

正則表達式:

 

正則表達式的規則:


0-9】 【a - z】 【A - Z】 【A - z】不建議這樣寫,可能有特殊字符

最好寫成【a - z A - Z

0-9a-fA-F】用來匹配16進制

。配任意字符

。。。。。  

。。。。。

圖片24.png 

 

 

 圖片25.png

相關文章
相關標籤/搜索