day9 初識函數

1複習

 

#序列
'''在python中,序列類型包括字符串(普通字符串和unicode字符串)、列表和元組,
所謂序列,即成員有序排列,而且能夠經過下邊偏移量訪問到它的一個或者幾個成員。
'''

#今日內容
'''數據庫 存儲數據和信息用的 本質上和文件沒有區別 增刪改查更方便了
流程控制:條件判斷和各類循環
爲何要有文件處理:內存---->硬盤
'''
#文件操做複習
#文件處理
    #打開文件
        #open('路徑','打開方式 mode=','指定編碼方式 encoding=')
        #打開方式:r w a r+ w+ a+ rb r+b等
            #r+ 讀寫 注意先讀後寫 否則會覆蓋
        #編碼方式:utf-8
    #操做文件
        #
            #read 一次性讀
            #readline 一行一行讀
                #不知道在哪兒結束 視頻圖片等必須按照字節讀不能一行一行讀
            #readlines一次性讀按行切分放列表
            #for循環讀文件最好:從頭至尾內存只有一行文件內容
        #
            #write  \n能夠換行(打印的仍是換行符會換行不會打印出「\n」 添加的時候會把‘\n’添加進去
        #光標:文件指針
            #seek 按字節指定光標移到到某個位置
            #tell 獲取光標當前的位置
            #truncate 按字符截取文件 返回字符數
        #關閉文件
            #close()
#修改文件
    #open調用系統文件 windows系統默認gbk編碼 若是不指定編碼方式 由於python是utf-8會亂碼
# with open('小護士班主任',encoding='utf-8') as f,open('小護士班主任.bak','w',encoding='utf-8')as f2:
#     for line in f:
#         if "星兒" in line:
#             line=line.replace('星兒','阿嬌')
#         #寫文件
#         f2.write(line)
# import os
# os.remove('小護士班主任')#刪除文件
# os.rename('小護士班主任.bak','小護士班主任')#重命名文件
# s='alex'
# s='_'.join(s)
# print(s)

 

2初識函數

s='jjjjjj'
def my_len(): #定義/聲明一個函數
    i=0
    for k in s:
        i+=1
    print(i)
length=my_len() #調用函數 帶括號
print(length)
#定義了以後 能夠在任何須要它的地方調用 沒有返回長度 只是單純打印

<<<
6
None
#return返回值的三種狀況
    #沒有返回值:返回None
        #不寫return  只寫return:return結束一個函數的繼續 return None 至關於return
    #返回一個值
        #能夠返回任何數據類型 只要返回就能夠接收到  若是在一個程序中多個return,那麼只執行第一個return
    #返回多個值
        #用一個或多個變量接收 獲得一個元祖

def func():
    l=['qq','ww']
    for i in l:
        print(i)
        if i=='qq':
            return
    print('*'*6)
print(func())

def func():
    return {'f':1}
print(func())

def func2():
    return 1,2,3 #至關於(1,2,3),因此能夠一個或3個變量接收 元祖列表字典都能解包
a,b,c=func2()
print(a)

def my_len(s):
    i=0
    for k in s :
        i+=1
    return i
a=my_len('hhhhh')
b=my_len([1,2,3,4,5,6])
print(a,b)

def f2(l1):
    f1(l1)
    for i in l1:
        print(i,end='')
def f1(l1):
    for i in l1:
        print(i,end='')
f2([1,2,3,4,5])

def my_sum(a,b):
    # print(a,b)
    res=a+b
    return res
ret=my_sum(1,2)
print(ret)

<<<
qq
None
{'f': 1}
1
5 6
12345123453

傳參

 

#站在實參的角度上:按照位置傳參 關鍵字傳參 混着用的時候必須先位置傳參而後關鍵字傳參

#站在形參的角度上:位置參數:必須傳 有幾個參數傳幾個值 默認參數:不傳就用默認的 傳了就用傳的

def classmates(name,gender=''):
    print('%s:%s'%(name,gender))
classmates(111,'')

<<<
111:女

 

動態參數以及形參順序

 

#動態參數:*args 接收全部位置參數 組織成一個元祖 **kwargs 接收全部關鍵字傳參的值 組織成一個字典
#形參的順序:位置參數 *args 默認參數 **kwargs
def sum(*args):
    i=0
    for k in args:
        i+=1
    return i
print(sum(1,2,3,6))

def func(**kwargs):
    print(kwargs)
    return kwargs
print(func(a1_=1,b=2,c=3))

def func(*args,default=1,**kwargs):
    print(args,default,kwargs)
func(1,2,a=3,b=4)

<<<
4
{'a1_': 1, 'b': 2, 'c': 3}
{'a1_': 1, 'b': 2, 'c': 3}
(1, 2) 1 {'a': 3, 'b': 4}

 

 

動態參數的另外一種傳參方式

#動態參數的另外一種傳參方式
def func(*args):#站在形參角度上,給一個變量加上*,就是組合全部傳來的值
    print(args)
func(1,2,3)
l=(1,2,3,4,4)
func(l)
func(*l) #站在實參角度上,給一個序列加上*,就是將這個序列按順序打散
d={'a':1,'b':2}
func(*d)


def func(**kwargs):
    print(kwargs)
func(a=1,b=2)
d={'a':1,'b':2}
func(**d)

<<<
(1, 2, 3)
((1, 2, 3, 4, 4),)
(1, 2, 3, 4, 4)
('a', 'b')
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}

函數的註釋

 

#函數的註釋
# def func():
'''
    這個函數實現了什麼功能
    參數1:
    參數2:
    return: 字符串或者。。。
    '''
    # pass
'''
文件的修改
函數
函數的定義
函數的調用
函數的返回值
函數的參數
形參:位置參數:必須傳實參
      *args:能夠接收任意多個位置參數
      默認參數:能夠不傳
      **kwargs:能夠接受任意多個關鍵字參數
實參:按照位置傳參 按照關鍵字傳參

函數 :內置函數  自定義函數'''

 

li=['alex','wusir','rain']
print('*'.join(li))
print('s s ssss'.split(' *'))
<<<
alex*wusir*rain
['s s ssss']
#1-2+3...+99
sum=0
for i in range(1,100):
    if i%2==1:
        sum+=i
    else:
        sum-=i
print(sum)

for i in range(10,-1,-1):
    print(i,end='')

<<<
50
109876543210
#實現一個整數加法計算器 dic={'最終計算結果':結果}
content=input('請輸入內容:')
content_list=content.split('+')
print(content_list)
sum=0
for i in content_list:
    sum+=int(i) #int默認去空格
print(sum)
<<<
請輸入內容:2 +99
['2 ', '99']
101
#將大於66得數保存到字典的第一個key中 小於66的保存到第二個key中
li=[11,22,33,44,55,77,88,90]
result={}
for i in li:
    if i>66:
        if 'key1'not in result:
            result['key1']=[]
        result['key1'].append(i)
    else:
        if 'key2'not in result:
            result={'key2':[]}
        result['key2'].append(i)
print(result)


li=[11,22,33,44,55,77,88,90]
result={}
for row in li:
    result.setdefault('key1',[])
    result.setdefault('key2',[])
    if row >66:
        result['key1'].append(row)
    else:
        result['key2'].append(row)
print(result)
<<<
{'key2': [11, 22, 33, 44, 55], 'key1': [77, 88, 90]}
{'key1': [77, 88, 90], 'key2': [11, 22, 33, 44, 55]}
user_list=[{'username':'barry','password':1234},
{'username':'alex','password':'asdf'}]
board=['zs','lxs','wemz']
while 1:
    username=input('<<<')
    if username.upper()=='Q':break
    password=input('<<<')
    for i in board:
        if i in username:
            username=username.replace(i,'*'*len(i))
user_list.append({'username':username,'password':password})
print({'username':username,'password':password})
print(user_list)
<<<hahaha
<<<111
<<<q
{'username': 'q', 'password': '111'}
[{'username': 'barry', 'password': 1234}, {'username': 'alex', 'password': 'asdf'}, {'username': 'q', 'password': '111'}]
相關文章
相關標籤/搜索