zoukankan      html  css  js  c++  java
  • python,函数的基本用法

    一.函数

    函数的概念:对功能或者动作的封装可以帮我们把一段公共的代码提取出来

    语法如下

    def 函数名(形参):
    	函数体
    函数名(实参)
    
    # 函数名()
    def yue():
        print("1. 打开手机")
        print("2. 打开陌陌")
        print("3. 找个漂亮的小姐姐")
        print("4. 探讨一下人生")
        print("5. 一起出来happy")
    
    yue() # 执行一次函数
    print("休息休息")
    yue() # 再来一次
    print(yue)

    二.函数的返回值
    return, 终止函数的运行
    1. 函数内部不写return, 默认在最后返回None
    2. 函数只写了return 返回None
    3. return 值 有一个返回值
    4. return 值1, 值2, 值3 .... 有多个返回值
    返回值返回给调用方

    例一
    def yue():
        print("1. 打开手机")
        print("2. 打开陌陌")
        print("3. 找个漂亮的小姐姐")
        print("4. 探讨一下人生")
        print("5. 一起出来happy")
    ret = yue()
    print(ret)
    例二
    def yue():
        print("1. 打开手机")
        print("2. 打开陌陌")
        return
        print("3. 找个漂亮的小姐姐")
        print("4. 探讨一下人生")
        print("5. 一起出来happy")
    例三
    def yue():
        print("1. 打开手机")
        print("2. 打开陌陌")
        print("3. 找个漂亮的小姐姐")
        print("4. 探讨一下人生")
        print("5. 一起出来happy")
        return "漂亮的小姐姐"  # 返回到哪儿了????  谁调用的就返回给谁
    例四
    def yue():
        print("1. 打开手机")
        print("2. 打开微信")
        print("3. 找个漂亮的小姐姐")
        print("4. 探讨一下人生")
        print("5. 一起出来happy")
        return "漂亮的小姐姐","大妈", "大爷", "鲜肉"  # 返回到哪儿了????  谁调用的就返回给谁
    ret = yue() # ('漂亮的小姐姐', '大妈', '大爷', '鲜肉')
    print(ret)
    

    三.函数的参数(一部分)
    形参: 在函数声明位置的变量
    1. 位置参数2. 默认值参数

    def regist(id, name, age, gender="男"): # 从语法上讲. 不允许, 从代码运行也不允许
        print(id, name, age, gender)
    regist(3, "王大锤", 20)
    regist(4, "李鸿洁", 18, "女")

    3. 混合参数  位置参数, 默认值参数
    4. 动态传参, *args, **kwargs
    实参: 在函数调用的时候给函数传递的具体的值
    1. 位置参数

    def chi(good_food, junk_food,drink, sweet, xiaoshi, lingshi1, lingshi2, lingshi3, good_food2, xiaoye, shuiguo):
        print(good_food, junk_food, drink, sweet)
    chi("猪蹄", "北冰洋", "哈根达斯", "薯条", "罐头", "大米饭")
    
    def chi(good_food, junk_food,drink, sweet):
        print(good_food, junk_food, drink, sweet)
    
    chi("大米饭", "猪蹄", "北冰洋", "哈根达斯")

    2. 关键字参数

    def chi(good_food, junk_food,drink, sweet):
        print(good_food, junk_food, drink, sweet)
    # 关键字参数: 必须按照形参的名字来传递信息
    chi(good_food="大米饭", sweet="哈根达斯", drink="饮料", junk_food="薯条")

    3. 混合参数

    def chi(good_food, junk_food, drink, sweet):
        print(good_food, junk_food, drink, sweet)
    chi("大米饭", "薯条", sweet="哈根达斯", drink="北冰洋") # positional argument follows keyword argument 

    顺序: 位置, 关键字
    传参: 把实参赋值给形参的过程

    四.函数的应用

    1.注册
    def regist():
        f = open("account", mode="r+", encoding="utf-8")
        while 1:
            # 输入用户名和密码
            username = input("请输入你的用户名:")
            password = input("请输入密码:")
    
            for line in f:
                if line.strip().split(":")[0] == username:
                    print("对不起, 该用户已经注册!")
                    break
            else:
                print("恭喜, 注册成功")
                f.write("
    "+username+":"+password)
                # break #  能执行到这个break. for一定是执行完了的.
                f.flush()
                f.close()
                return  # 直接结束函数的调用
    regist()
    
    2.登录
    def login():
        username = input("请输入用户名:") # sylar:123
        password = input("请输入密码:") # 123
        f = open("account", encoding="utf-8")
        for line in f:
            if line.strip() == username + ":" + password:
                print("恭喜你.登录成功 ")
                return True # True, 登录成功
    
        else:
            print("对不起, 用户名或密码错误")
            return False # False 登录失败
    login()
    login()
    login()
    login()
    

    练习六..作业

    1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
    def func(lst):
        return lst[1::2]
    print(func(['王大锤','刘亦菲','曾小贤','王祖贤','张柏芝','陈小春']))
    2.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
    def func(lst):
        return len(lst)>5
    print(func([1,2,2]))
    3.写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
    def func(lst):
        if len(lst)>2:
            return lst[:2]
    print(func([1,2]))
    4.写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
    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
        print(shuzi,zimu,kongge,qita)
        return shuzi,zimu,kongge,qita
    func("hidjhdsfhfhsdsd2323453478%R$%$%$%+--==-g-//..,l")
    5.写函数,接收两个数字参数,返回比较大的那个数字。
    方案一
    def func(a, b):
        if a > b:
            return a
        else:
            return b
    方案二
    def func(a, b):
         return a if a > b else b   # a>b? a:b
    
    6.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    PS:字典中的value只能是字符串或列表
    def func(dic):
        dd = {}
        for k, v in dic.items():
            if len(v) > 2:
                v = v[:2]
            dd[k] = v
        return dd
    
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    print(func(dic))
    7.写函数,此函数只接收一个参数且此参数必须是列表数据类型, 此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
    def func(lst):
        dic = {}
        for i in range(len(lst)): # 索引  0 1 2
            dic[i] = lst[i]
        return dic
    
    print(func([11,22,33]))
    8.写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。 用户通过输入这四个内容,然后将这四个内容传入到函数中, 此函数接收到这四个内容,将内容追加到一个student_msg文件中。 
    def func(name,edu, age, gender="男"):
        f = open("student_msg", mode="a", encoding="utf-8")
        f.write(name+"$$"+gender+"$$"+edu+"$$"+age+"
    ")
        f.flush()
        f.close()
    9.题升级:支持用户持续输入,Q或者q退出,性别默认为男, 如果遇到女学生,则把性别输入女
    while 1:
        content = input("请输入姓名,年龄,学历,性别(周杰伦,18,小本,)(q退出)")
        if content.upper() == "Q":
            break
        lst = content.split(",")
    
        if len(lst) <= 3 or lst[3] == '':
            func(lst[0], lst[2], lst[1])
        else:
            func(lst[0], lst[2], lst[1], lst[3] )
    def func(s="男"):
        print(s)
    func()
    10.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成文件的修改操作(升级题)。
    def func(file_path, old, new):
        with open(file_path, mode="r", encoding="utf-8") as f1, 
             open(file_path + "_副本", mode="w", encoding="utf-8") as f2:
            for line in f1:
                s = line.replace(old, new)
                f2.write(s)
        os.remove(file_path)
        os.rename(file_path+"_副本", file_path)
    
    func("student_msg", "$$", "@@")
    

      

      

  • 相关阅读:
    nexus 安装与启动(windows本版)
    linux 安装 mysql8
    02、linux 常用指令
    linux 安装tomcat8
    CentOS7使用firewalld打开关闭防火墙与端口
    03、linux 安装jdk
    rabbit mq的使用
    跨域与同源策略
    JDK1.8新特性04--Optional处理空指针问题
    HttpAsyncClient异步调用
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/9891331.html
Copyright © 2011-2022 走看看