zoukankan      html  css  js  c++  java
  • python全栈开发 * 09知识点汇总 * 1806011

    09 函数初识
    一 函数的的定义
    # 函数: 对代码块和功能的封装和定义
    # 引入 回家过程 未用函数
    # print("步行")
    # print("坐地铁")
    # print("坐私家车")
    #用函数
    # def go_home():
    # print("先步行")
    # print("坐地铁")
    # print("坐私家车")
    # go_home()
    # go_home()
    ⼆.函数的定义, 函数名, 函数体以及函数的调⽤
    1.用 def 来定义函数.其基本语法如下:
    # def 函数名()
    # 函数体
    2.函数名的规范和使用与变量基本一致
    3.函数体 : 函数被执行之后要执行的代码.(如下)
    # print("先步行")
    # print("坐地铁")
    # print("坐私家车")
    4.函数的调用使⽤函数名可以调⽤函数,
    # 写法: 函数名(), 这个时候函数的函数体会被执⾏.
    # 如上述 go_home()
    # 结果:先步行
    # 坐地铁
    # 坐私家车
    三.函数的返回 (return) 执行完函数后,可以用return来返回结果.
    1. 函数中遇到return,此函数结束,不再执行.(如下)
    # def go_home():
    # print("先步行")
    # print("坐地铁")
    # return
    # print("坐私家车")
    # go_home()
    # 输出结果 (先步行,坐地铁)
    2.给函数的调⽤者⼀个访问结果(返回值)
    (1)返回一个结果:
    # def go_home():
    # print("先步行")
    # print("坐地铁")
    # print("坐私家车")
    # return "有人接,有饭吃"
    # ret=go_home()
    # print(ret)
    (2)返回多个结果: 调用者可以接受一个元组,调用者可以解构成多个变量.
    # def go_home():
    # print("先步行")
    # print("坐地铁")
    # print("坐私家车")
    # return "有人接,有饭吃","终于可以睡觉了","zzzz"
    # ret=go_home()
    # print(ret)
    # 结果 : ('有人接,有饭吃', '终于可以睡觉了', 'zzzz') 元组
    # a,b,c=go_home()
    # print(a,b,c)
    # 结果 : 解构成多个变量
    总结return返回值:
    # a. 如果return什么都不写 或者 ⼲脆不写return .那么返回的就是None
    # b .如果return后⾯写了⼀个值. 则调⽤者可以接收⼀个结果
    # c .如果return后⾯写了多个结果, 则调⽤者可以接收⼀个tuple, 调⽤者可以直接解构成多个变量
    四. 函数的参数
    1.参数的定义:函数在访问的时候,给函数传递的一些信息.如果有很多个参数,则用逗号分开.
    2.参数的语法:
    # def 函数名( 参数列表 )
    # 函数体
    # eg:
    # def go_home(trac):
    # print("先步行")
    # print("坐"+trac)
    # print("坐私家车")
    # go_home("地铁")
    3.参数的分类
    # (1)形参:写在函数声明的位置的变量叫形参. 形式上的⼀个完整. 表⽰这个函数需要xxx
    # (2)实参:在函数调⽤的时候给函数传递的值. 叫实参, 实际执⾏的时候给函数传递的信息. 表⽰给函数xxx
    4.实参的分类:
    (1). 位置参数: 在访问yue()的时候, 我们按照位置的顺序分别把"地铁", "私家车", 赋值给 tra1,tra2
    # 在传参过程中. 系统会默认按照位置把实参赋值到形参.
    # def go_home(tra1,tra2):
    # print("先步行")
    # print("坐"+tra1)
    # print("坐"+tra2)
    # go_home("地铁","私家车")
    (2). 关键字参数: 我们不需要记住每个参数的位置. 只要记住每个参数的名字就可以了
    # def go_home(tra1,tra2):
    # print("先步行")
    # print("坐"+tra1)
    # print("坐"+tra2)
    # go_home(tra2="私家车",tra1="地铁")
    (3). 混合参数 :可以把上⾯两种参数混合着使⽤. 也就是说在调⽤函数的时候即可以给出位置参数, 也可
    # 以指定关键字参数. (注意: 在使⽤混合参数的时候, 关键字参数必须在位置参数后⾯)
    # def go_home(tra1,tra2):
    # print("先步行")
    # print("坐"+tra1)
    # print("坐"+tra2)
    # go_home("地铁",tra2="私家车")
    5.形参的分类:
    (1) 位置参数 : 按照位置来赋值, 到⽬前为⽌, 我们编写的函数都是这种
    (2) 默认值参数 : 在函数声明的时候, 就可以给出函数参数的默认值.在调⽤的时候可以给出具体的值, 也可以不给值, 使⽤默认值.
    # def go_home(tra1,tra2="私家车"):
    # print("先步行")
    # print("坐"+tra1)
    # print("坐"+tra2)
    # go_home("地铁")
    # 注意: 必须先声明位置参数, 才能声明默认值参数.(大多数传进来的参数都是一样的.
    课后作业
    7. 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    PS:字典中的value只能是字符串或列表得分
    def func7(dic):
    for k,v in dic.items():
    if len(v)>2:
    v=v[0:2]
    dic[k]=v
    return dic
    print(func7({"k1": "v1v1", "k2": [11,22,33,44]}))
    8.写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,
    此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}

    def func8(lst):
    dic={}
    if type(lst)==list:
    for i in range(0,len(lst)):
    dic[i]=lst[i]
    return dic
    print(func8([11,22,33]))
    9,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,
    此函数接收到这四个内容,将内容追加到一个student_msg文件中。
    def func9(name,agen,age,edu):
    with open("student_msg",mode="a",encoding="UTF-8")as f:
    f.write("姓名:%s,性别:%s,年龄:%s,学历:%s" %(name,agen,age,edu))
    f.flush()
    f.close()
    name=input("请输入您的姓名:")
    agen=input("请输入您的性别:")
    age=input("请输入您的年龄:")
    edu=input("请输入您的学历:")
    func9(name,agen,age,edu)
    10 对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
    def func10(name,age,edu, agen="男"):
    with open("student_msg",mode="a",encoding="UTF-8")as f:
    f.write("姓名:%s,性别:%s,年龄:%s,学历:%s " %(name,agen,age,edu))
    f.flush()
    f.close()
    while 1:
    name=input("请输入您的姓名:")
    age=input("请输入您的年龄:")
    edu=input("请输入您的学历:")
    agen = input("默认性别是男,直接回车即可")
    if agen=="":
    func10(name,age,edu,)
    else:
    func10(name,age,edu,agen)
    flag=input("请问是否继续录入,输入Q退出")
    if flag.upper()=="Q":
    break
    11.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)
    import os
    def func11(file_name,old,new):
    with open(file_name,mode="r",encoding="UTF-8")as f,
    open(file_name+"new",mode="w",encoding="UTF-8")as f1:
    for line in f:
    line=line.replace(old,new)
    f1.write(line)
    os.remove(file_name)
    os.rename(file_name+"new",file_name)
    func11("a1","黑","白")
    12.写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)
    # 注册
    def regist():
    while 1:
    user=input("请输入用户名:")
    pwd=input('请输入密码:')
    with open("a1",mode="r+",encoding="UTF-8")as f:
    for line in f:
    lst=line.strip().split(" ") #将文件里的每一行用 切割成列表
    username=lst[0] # 列表的第零项是用户名,第一项是密码
    if user==username:
    print("该用户名已存在,请重新输入")
    break
    else:
    f.write(user+" "+pwd+" ") #如果已有文件中没有该用户名,则把该用户名,密码添加到文件中.
    print('注册成功')
    return
    regist()
    # 三次登陆
    def log():
    n=0
    while n<3:
    user1=input("请输入用户名:")
    password=input("请输入密码:")
    with open("a1",mode="r",encoding="UTF-8")as f:
    for line in f:
    if user1+' '+password==line.strip():
    print("登陆成功")
    return #终止函数
    else:
    print("登陆失败")
    n=n+1
    else:
    print("三次登陆失败,请十分钟后重试")
    log()
  • 相关阅读:
    ADO.NET批量插入数据方法比较
    Thread was being aborted 分析与解决
    第三方刻录软件介绍
    ASP.NET登陆SQL Server数据库
    word 2010页眉页码从第三页开始设置
    误删除、误格式化后的灾难恢复方案
    Asp.Net4.0新特性概述
    ArcGIS Server的切图原理深入
    ArcGIS的缓存技术
    ArcGIS Server操作Mxd文件详细讲解
  • 原文地址:https://www.cnblogs.com/J-7-H-2-F-7/p/9167209.html
Copyright © 2011-2022 走看看