1. 程式人生 > >寫一些函數相關的作業

寫一些函數相關的作業

兩個 isa break Coding 其他 utf-8 完成 inpu 判斷

#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 = {‘num‘:0,‘alpha‘:0,‘space‘:0,‘others‘:0}
    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({1:‘wangjing‘,2:[1,2,3,4]}))

#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)

寫一些函數相關的作業