python练习题-day9

2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

def dan_index(itter):
    li=[]
    for i in range(len(itter)):
        if i%2==1:
            li.append(itter[i])
    return li

3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 

def len_itter(itt):
    count=0
    for i in itt:
        count+=1
    if count>5:
        return "{}长度大于5".format(itt)
    else:
        return "%s 长度小于5"%itt
print(len_itter([3489,34,"hello","myfu","good",78]))

4、写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。 

def it_len(itt):
    if len(itt)>2:
        return itt[:2]

5、写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。

def str_count(st):
    s=0
    b=0
    n=0
    for i in st:
        if i.isdigit():
            n+=1
        if i.isalpha():
            s+=1
        if i.isspace():
            b+=1
    return "%s有%s个数字%s字母%s空格"%(st,n,s,b)

6、写函数,接收两个数字参数,返回比较大的那个数字。 

def num_cam(a,b):
    if a>b:
        return a
    else:
        return b

7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

       dic = {"k1": "v1v1", "k2": [11,22,33,44]}

       PS:字典中的value只能是字符串或列表

def dic_filter(dic):
    for i,j in dic.items():
        if len(j)>2:
            j=j[:2]
            dic.update({i:j})
    return dic
print(dic_filter( {"k1": "v1v1", "k2": [11,22,33,44]}))

8、写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。

#方法一
def list_trans(li):
    dic={}
    for i,j in enumerate(li):
        dic.setdefault(i,j)
    return dic
print(list_trans([11,22,33]))
#方法二
def list_trans(li):
    dic={}
    for i in range(len(li)):
        dic.setdefault(i,li[i])
    return dic
print(list_trans([11,22,33]))

9、写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。

def stu_add(name,gender,age,education):
    with open("stu_info.txt","r+",encoding="utf-8") as f2:
        data=f2.readline()
        f2.write("\n%s  %s  %s  %s"%(name,gender,age,education))

 10、对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。

def stu_add():
    with open ("stu_info.txt","r+",encoding="utf-8") as f1:
        while True:
            stu_add=input("请输入用户信息(以空格隔开q或Q退出):").strip()
            if len(stu_add.split())==3:
                name,age,education=stu_add.split()
                f1.read()
                f1.write("\n%s  male  %s  %s"%(name,age,education))
                continue
            if len(stu_add.split())==4:
                name,gender,age,education=stu_add.split()
                f1.read()
                f1.write("\n%s  %s  %s  %s"%(name,gender,age,education))
                continue
            if stu_add.upper()=="Q":
                exit("谢谢使用,正在退出")

11、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。

def file_modify(filename,contant):
    import os
    contant_new = input("请输入修改后的内容:")
    with open(filename,encoding="utf-8")as f1,open("filename_new","w",encoding="utf-8") as f2:
        for i in f1:
            new_i=i.replace(contant,contant_new)
            f2.write(new_i)
    os.remove(filename)
    os.rename("filename_new",filename)

12、写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)

def register():
    uname=input("请输入注册名:").strip()
    pwd=input("请输入注册密码:").strip()
    pwd2=input("请重新输入密码:").strip()
    if pwd==pwd2:
        with open("info_database","w+",encoding="utf-8") as f1:
            f1.write("%s\n%s"%(uname,pwd))
def login():
    count=0
    while count<3:
        username=input("请输入登录名:").strip()
        password=input("请输入密码:").strip()
        with open("info_database",encoding="utf-8") as f2:
            u=f2.readline()
            p=f2.readline()
            if username==u.strip() and password==p.strip():
                print("登录成功")
                break
            else:
                print("用户名或密码有误请重新输入你还有%s次机会"%(2-count))
                count+=1

猜你喜欢

转载自www.cnblogs.com/fumy/p/10304626.html