寫一些函式相關的作業

2022-09-15 16:09:12 字數 3327 閱讀 1347

#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 返回程序...