python 函数初识

##########################总结#####################

初识函数

定义: 对动作或者功能的封装.
语法:
def 函数名(形参):
函数体(return)

函数名(实参)

形参: 在函数声明的位置写的变量
1. 位置参数
2. 默认值参数.
实参: 在函数调用的位置给出的具体的值
1. 位置参数
2. 关键字参数
3. 混合 位置, 关键字
传参: 把实参传递给形参的过程

return: 返回, 程序如果运行到return, 函数结束运行.
1. 当我的函数不写return, 表示默认返回None
2. 函数中写return, 返回None
3. return 值, 有一个返回值
4. return 值1, 值2, 值3 多个返回值, 返回的是元组

################################作业######################

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

# def func(lst):
#     return list(lst[1::2])
#
# print(func([1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,34,45,6]))

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

# def func(s):
#     return len(s) > 5
#
# print(func("哈哈1233"))

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

def func(lst):
if len(lst) > 2:
return lst[0], lst[1]
return lst[0:2]
print(func(['11','2','3','4']))

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

def func(s=""):
    shuzi = 0
    zimu = 0
    kongge = 0
    qita = 0
    for c in s:
        if c.isdigit():
            shuzi += 1
        elif c.isalpha():
            zimu += 1
        elif c == " ":
            kongge += 1
        else:
            qita += 1

    return shuzi, zimu, kongge, qita

print(func("jin san pang zuo tian lai zhao alex yao 5000 kuai $$$"))

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

def func(a, b):
     return a if a > b else b
7.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表

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

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

def number(b):
    dic={}
    for i in range(len(b)):
        dic[i]=b[i]
    return dic
print(number([11,22,33]))

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

# name = input('请输入姓名:')
# xinbie = input('请输入性别:')
# age = input('请输入年纪:')
# xueli = input('请输入学历:')
#
# def tongji(a,b,c,d):
#     with open('student_msg',mode="a+",encoding='utf-8') as f:
#         f.write("%s+%s+%s+%s+\n" %(a,b,c,d))
# tongji(name,xinbie,age,xueli)
10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
# def func(name, age, edu, gender="男"):
#     f = open("student_msg", mode="a", encoding="utf-8")
#     f.write(name+"_"+gender+"_"+age+"_"+edu+"\n")
#     f.flush()
#     f.close()
# while 1:
#     n = input("请输入你的名字:")
#     g = input("请输入你的性别:")
#     a = input("请输入你的年龄:")
#     e = input("请输入你的学历:")
#
#     if g == "":
#         func(n, a, e)
#     else:
#         func(n, a, e, g)
#
#     content = input("信息录入完毕, 是否继续录入(Q退出)")
#     if content.upper() == "Q":
#         break

11,# 写函数,用户传入修改的文件名,与要修改的内容,执行函数,

# 完成整个文件的批量修改操作(升级题, 此题认真阅读和理解. 应该有3个参数才对)


def modify_file(file,old,new):
with open(file,mode='r',encoding='utf-8') as f1,\
open(file+'bak',mode='w',encoding='utf-8') as f2:
for i in f1:
i=i.replace(old,new)
f2.write(i)
os.remove(file)
os.rename(file+'bak',file)
modify_file("a.txt", "name", "bbb")

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

def regist():
    uname = input("请输入你的用户名:")  # wusir
    # 判断一下用户名是否重复:
    f = open("userinfo", mode="r", encoding="utf-8")
    for line in f: # alex_123
        un = line.split("_")[0] # 文件中的用户名 alex
        if un == uname: # 一次判断 没有判断出结果.必须等整个循环结束才能出结果
            print("对不起. 您的用户名已经重复. ")
            return
    else:
        print("用户名可用!")
    f.close()
    upwd = input("请输入你的密码:")
    f = open("userinfo", mode="a", encoding="utf-8")
    f.write(uname+"_"+upwd+"\n")
    f.flush()
    f.close()
# regist()
def login():
    count = 1
    while count <= 3:
        uname = input("请输入你的用户名:")
        upwd = input("请输入你的密码:")
        f = open("userinfo", mode="r", encoding="utf-8")
        for line in f:
            u,p = line.strip().split("_")
            if uname == u and upwd == p:
                print("登录成功")
                return True
        else:
            print("登录失败, 用户名或密码错误")
            count += 1
login()

 

posted @ 2018-12-07 17:32  崽崽1573  阅读(214)  评论(0编辑  收藏  举报