python全栈开发-前方高能-函数

2018-07-16 02:50:16来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

python_day_9

一.今日主要内容
函数:
函数:对功能的封装
语法:
def 函数名(形参):
函数体
函数名(实参)
函数名:命名规则和变量一样

函数的返回值:
return, 函数执行完毕. 不会执行后面逻辑

  1. 如果函数中不写return返回None
  2. 只写return 返回None
  3. return 返回值. 返回一个值
  4. return 值1, 值2,... 返回多个值. 调用方接收到的是元组

参数:
在函数执行的时候给函数传递的信息
函数的参数的个数没有限制
1. 形参:

  • 1. 位置参数.
  • 2. 默认值参数. 当调用的时候不给传值使用默认值
  • 3. 混合使用. 顺序: 1. 位置参数, 2, 默认值参数

2. 实参:

  • 1.位置参数. 按照位置给形参赋值
  • 2. 关键字参数. 按照名称给形参赋值
  • 3. 混合参数. 先用位置参数, 再用关键字参数

09. 前??能-初识函数

本节内容:

  • 1. 什么是函数
  • 2. 函数定义, 函数名, 函数体以及函数的调?
  • 3. 函数的返回值
  • 4. 函数的参数

?. 什么是函数
我们可以先去定义?个事 情或者功能. 等到需要的时候直接去?就好了. 那么这?定义的东?就是?个函数.

函数: 对代码块和功能的封装和定义

执行流程:

三. 函数的返回

执?完函数之后. 我们可以使?return来返回结果. 函数中return的使?:

返回值可以是多个结果:

总结?下:

1. 遇到return. 此函数结束, 函数后?的东?将不会再执?

2. return 返回值 关于返回值: 如果return什么都不写 或者 ?脆不写return .那么返回的就是None 如果

return后?写了?个值. 则调?者可以接收?个结果 如果return后?写了多个结果, 则调?者可以接收

?个tuple, 调?者可以直接解构成多个变量 OK. 完美. 可以得到结果了. 但是我们的约的?式是不是有

点?问题呢?, 陌陌现在还能约到 么?约不到了吧. 该换探探了. 那过两天探探也死掉了呢? 是不是还会

有?个替代品. 那你想. 有?个替代的.你就需要去改?下代码. 是不是不太合适了. 最好的?式是不是想

?什么约就 ?什么约? ok. 我们可以通过函数的参数来给函数传递?些信息.

四. 函数的参数 参数, 函数在调?的时候指定具体的?个变量的值. 就是参数. 语法:

def fun():
    print("你无情,你残酷,你无理取闹!")
    print("我哪里无情,哪里残酷,哪里无理取闹!")
    print("你就是无情,就是残酷,就是无理取闹!")
    return "你才无情,你才残酷,你才无理取闹!","我没有无情,没有残酷,没有无理取闹!","ending"

a,b,c = fun()
print(a)
print(b)
print(c)
参数:在函数执行过程中给函数才传递的信息
形参:在函数声明的位置,声明出来的变量
实参:在函调用过程中,实际你给函数传递的值

game(Internet,games):#形参
    print("打开手机")
    print("连上%s" % Internet)
    print("打开%s" % games)
    print("玩到手机关机!")
#函数的参数的个数没有限制
game("数据","王者荣耀")#实参
game("WiFi","刺激战场

注意参数的顺序:

mation(id,name,age,sex):
    print("序号:%s\n姓名:%s\n年龄:%s\n性别:%s" % (id,name,age,sex))

information(1,"corn",21,"")#位置参数
information(id = 2,name = "corn1",age = 22,sex = "")#关键字参数

information(3,"corn2",age = 23,sex = "不详")#混合参数:注意顺序,位置参数在前,关键字参数在后

#默认值参数和为主参数的混合参数:位置参数在前,默认值参数在后

def regist(id,name,age,sex = ""):#默认值参数
    print("序号:%s\n姓名:%s\n年龄:%s\n性别:%s" % (id,name,age,sex))
regist(1,"corn",21)
regist(2,"corn1",22)
regist(3,"corn3",23

注意, 必须先声明位置参数, 才能声明默认值参数

 

作业:

二.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def odd(lst):
    li = []
    for i in range(len(lst)):
        if i%2 != 0:
            li.append(lst[i])
    return li

a = odd([1,2,3,4,5,6,7,8,9])
print(a)
三.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def i(lst):
    if len(lst) > 5:
        return"长度大于5"
    else:
        return"长度不大于5"

a = i([1,2,3,4,5,6])
print(a)
四.写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
def i(lst):
    if len(lst) > 2:
        return lst[0],lst[1]
    else:
        return"列表长度不大于2"
a = i([1,2,3])
print(a)
五,写函数,计算传入函数的字符串中, 数字、字母、空格 以及其他内容的个数,并返回结果。
def time(l):
    num = 0
    zm = 0
    blank = 0
    other = 0
    for i in l:
        if i.isdigit() == True:
            num += 1
        elif i.isalpha() == True:
            zm += 1
        elif i == " ":
            blank += 1
        else:
            other += 1
    return "数字出现了%s次,字母出现了%s次,空格出现了%s次,其他出现了%s次" % (num,zm,blank,other)
a = time("1 2 3 4 5 6 a,b,c,d,e,f,")
print(a)
六,写函数,接收两个数字参数,返回比较大的那个数字。
def n(num,num1):
    if num > num1:
        return num
    elif num < num1:
        return num1
    else:
        return"两个数一样大"

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

a = zd({"1":"dasd","2":[1,2,3,4,5,6],"3":"你好!"})
print(a)
八,写函数,此函数只接收一个参数且此参数必须是列表数据类型,
此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列
表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典
为 {0:11,1:22,2:33}。
def d(lst):
    dic = {}
    for i in range(len(lst)):
        dic[i] = lst[i]
    return dic

a = d([11,22,33,44,55,66,77,88])
print(a)
九,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,
然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
def w(name,sex,age,edu):
    f = open("student_msg",mode='w',encoding="utf-8")
    f.write("姓名:%s\n性别:%s\n年龄:%s\n学历:%s" % (name,sex,age,edu))
    f.flush()
    f.close()

w("corn","",21,"专科")
 十,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
def w(sex = ""):
    while True:
        name = input("姓名:")
        age = input("年龄:")
        edu = input("学历:")
        sex = input("性别:")
        f = open("student_msg",mode='a',encoding="utf-8")
        f.write("姓名:%s\n年龄:%s\n学历:%s\n性别:%s""\n" % (name,age,edu,sex))
        f.flush()
        f.close()
        q = input("按Q退出录入,其他键继续录入:")
        if q.strip().upper() == "Q":
            break

w()
十一,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。
def mod(r,m,n):
    import  os
    with open(r,mode="r",encoding="utf-8")as f, \
            open("a1.txt",mode="w",encoding="utf-8")as f1:
        for line in f:
            s = line.replace(m,n)
            f1.write(s)
    os.remove(r)
    os.rename("a1.txt",r)

mod("a.txt","我不好!","我很好!")
十二,写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)
def dl():
    count = 3
    while count > 0:
        account = input("请输入你的账号:")
        password = input("请输入你的密码:")
        count -= 1
        for i in dic:
            if account == i and password ==dic[i]:
                print("登录成功")
                return

        print('账号或者密码错误,请重新输入(还剩%s次机会):' % count)
        x = input("按Q返回上一菜单,其他键继续:")
        if x.upper().strip() == "Q":
            return


def login():
    while 1:
        account = input("请输入你注册的账号(6位以上):")
        password = input("请输入你的密码:")
        password1 = input("请重新输入一遍你的密码:")
        if len(account) <= 6 or account.isdigit() == False:
            print("账号不合法!请重新输入!")
        elif password == password1:
            dic[account] = password
            print("恭喜你,注册成功!")
            return
        else:
            print("你输入的两次密码不匹配,请重新输入")
            x = input("按Q返回上一菜单,其他键继续:")
            if x.upper().strip() == "Q":
                break
dic = {}
menus = ("1, 登录", "2, 注册", "3, 退出")
while 1:
    for item in menus:
        print(item)
    s = input('请输入您要选择的菜单项:')
    if s == '1':
        dl()
    elif s == "2":
        login()
    elif s == "3":
        break
    else:
        print("指令错误!")

2018-07-13  15:31:23

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python文件操作

下一篇:python使用requests时报错requests.exceptions.SSLError: HTTPSC