#1、寫函式,檢查獲取傳入列表或元組物件的所有奇數字索引對應的元素,並將其作為新列表返回給呼叫者def func(l):
return l[1::2]
print(func([1,2,3,4,5,6]))
#2、寫函式,判斷使用者傳入的物件(字串、列表、元組)長度是否》5
def func(x):
return len(x)>5 #計算的表示式都是乙個布林表示式,結果是乙個true/false
print(func([1,2,3,4]))
#3、寫函式,檢查傳入列表的長度,如果大於2則保留前兩個長度的內容,並將新內容返回
def func(l):
return l[:2] #切片的長度如果大於原序列的長度,不會報錯,有多長且多長
print(func([1]))
#4、寫函式,計算傳入字串中 數字、字母、空格、其他字元的個數,並返回結果
def func(s):
dic =
for i in s:
if i.isdigit():
dic['num'] += 1
elif i.isalpha():
dic['alpha'] += 1
elif i.isspace():
dic['space'] += 1
else:
dic['others'] += 1
return dic
print(func('sfd345 fsd gdh -=-a=x'))
#5、寫函式,檢查使用者傳入的物件的每乙個元素是否含有空內容,並返回結果
def func(x):
if x and type(x) is str:
for i in x:
if i == ' ':
return true
elif x and type(x) is list or type(x) is tuple:
for i in x:
if not i:
return true
elif not x:
return true
else:
return true
print(func([1,2,3,'hhhj ']))
#6、寫函式,檢查傳入的字典的每乙個value的長度,如果大於2,那個保留前兩個長度的內容,並返回新內容
def func(dic):
for k in dic:
if len(dic[k]) >2:
dic[k] = dic[k][:2]
return dic
print(func())
#7、寫函式,接收2個數字引數,返回比較大的數字
def func(a,b):
return a if a>b else b #max(a,b)
print(func(5,4))
#8、寫函式,使用者傳入修改的檔名 與 要修改的內容,執行函式,完成整個檔案的批量修改操作
def func(file,old,new):
with open(file,mode='r',encoding='utf-8') as f1,\
open('{}.bak'.format(file),mode = 'w',encoding = 'utf-8') as f2:
for line in f1:
if old in line:
line = line.replace(old,new)
f2.write(line)
import os
os.remove(file)
os.rename('{}.bak'.format(file),file)
func('wj_file','wangjing','wangxiao')
'''作業1、先註冊,註冊結果寫到txt檔案,並列印
2、三次登入,讀取檔案驗證
'''def register():
user = ''
while 1:
name = input('請輸入您的使用者名稱:')
if name.upper() == 'q':
print('結束註冊,請登入')
break
pwd = input('請輸入您的密碼:')
if pwd.upper() == 'q':
print('結束註冊,請登入')
break
elif len(name) <= 10 and len(name) >= 6 and len(pwd) <= 10 and len(pwd) >= 6:
with open('wj_users', mode='a', encoding='utf-8') as txt_users:
txt_users.write('{},{}\n'.format(name, pwd))
print('恭喜您註冊成功')
else:
print('使用者名稱/密碼不符合規範,請重新註冊')
def get_users(file):
dict_user = {}
with open(file, mode='r', encoding='utf-8') as txt_users:
for line in txt_users:
dict_user[line[:line.find(',')]] = line[line.find(',') + 1:].strip()
return dict_user
def login(dict_user):
time = 3
while time > 0:
input_name = input('請輸入您的使用者名稱:')
input_pwd = input('請輸入您的密碼:')
time -= 1
if input_name in dict_user.keys() and input_pwd == dict_user[input_name]:
print('恭喜您登入成功')
break
else:
if time <= 0:
print('使用者名稱/密碼錯誤,您沒有登入機會,強制退出成功')
else:
print('使用者名稱/密碼錯誤,請重試')
print('以下進入註冊流程'.center(50, '='))
register()
users = get_users('wj_users')
print('以下進入登入流程'.center(50,'='))
login(users)
寫函式的一些心得
以下僅僅是短暫的程式設計經歷產生的經驗,拋磚引玉,貽笑大方。寫函式是為了便於在更多的場合下呼叫。當然這個 更多 是有成本的,需要因地制宜。如果這個函式只在乙個專案中使用,那麼就不需要考慮到其他專案的情況 如果想要拓展到其他專案,那麼就要留有餘地步,以供後期拓展。記住是拓展而不是改造,因為拓展比改造的...
一些執行緒相關的函式
object類自帶函式synchronized obj 用wait 寫出生產者和消費者模式的乙個小例子 生產者執行緒 synchronized queue catch exception e 沒滿,生成元素放入佇列 queue.add element queue.notifyall 喚醒所有其他正在...
注入相關的一些函式
查詢視窗控制代碼 lpclassname 引數可以為 null hwnd findwindowa lpcstr lpclassname,lpcstr lpwindowname hwnd findwindoww lpcwstr lpclassname,lpcwstr lpwindowname 返回程序...