zoukankan      html  css  js  c++  java
  • 20180712 (函数,函数的返回值return,函数的参数以及实际运用)

    函数      (函数的命名规则和变量一样:①是由字母,数字,下划线组成②开头不是数字,更不能是纯数字③不能是关键字④不要用中文⑤要有意义⑥区分大小写⑦不要太长⑧推荐驼峰和下划线格式)

    一.函数的含义

    先定义一个事情或者功能,等到需要的时候直接去用,这列定义的一个东西就是函数

    函数的语法;

      def  函数名(形参):

        函数体

      函数名(实参)

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

    二.函数的定义

    例如:    步骤分为4步骤:  ①先定义def  函数名   ②调用函数   ③准备执行函数   ④  执行函数  

      #首先定义一个功能叫chi()  ===>      (函数名)

      def chi():

        print("首先,打开手机")                   中间print部分是函数体,代码块

        print("打开手机美团")                        (函数被执行后要执行的代码块)

        print("选择一家餐厅")

        print("点餐")                           ==>当函数最后一句话完成的时候,函数完成

      chi()   =====>函数的调用   #执行函数           当函数执行完毕,表示当前本次chi()执行完毕

      print("减肥")

      chi()

    三.函数的返回    (return)      是要函数执行到return,函数就会停止     (return    返回值    当函数结束的时候,给调用者一个结果)

    例如:

      def chi():

        print("首先,打开手机")

        print("打开美团外卖")

        print("点餐")

        print("吃饭")

        return "减肥"                  ====>return在这里返回了一个结果,就是做这件事情之后的结果是什么

      ret = chi()

      print(ret) 

    函数的返回主要有四个方面的总结:

    1.每个函数如果在函数中不写return,默认返回None

    例如:

      def chi():

        print("洗菜")

        print("切菜")                                洗菜

        print("做饭")                      ====>切菜

                                                                做饭

      ret = chi()                                           None

      print(ret)

    2.每个函数中如果在函数中的return后面什么都不写   默认返回None值

    例如:

      def chi():

        print("洗菜")

        print("切菜")                                洗菜

        print("做饭")                  ======>切菜

        return                                          做饭

      ret = chi()                                           None

      print(ret)

    3.return后面只写一个值,则调用者可以接收到一个结果

    例如:

      def chi()

        print("洗菜")                                洗菜

        print("切菜")                                切菜

        print("做饭")                        ===>做饭

        return  "刷碗"                              刷碗

      ret = chi()

      print(ret)

    4.如果return后面写了多个结果,则调用者可以接收到一个元组(tuple),调用者可以直接解构成多个变量

    例如:

      def chi()

        print("洗菜")                           洗菜

        print("切菜")                           切菜

        print("做饭")                              做饭

        return  "收拾","刷碗","休息"                      =====>             收拾

      a,b,c = chi()   ret = chi()               刷碗

      print(a)     print(ret)  (这个打印出来的是个元组)  休息

      print(b)            

      print(c)

    四.函数的参数    (在函数执行的时候给函数传递的信息)

    函数的参数个数是没有要求的,但是在运行的时候,形参与实参要匹配,按照位置把实参赋值给形参

    (1)站在实参的角度上有三个参数:①位置参数②关键字参数③混合参数

    形参(在函数声明的位置,声明出来变量)

    ①位置参数

    例如:

      def chi(fangshi):

        print("打开手机")

        print("打开%s"软件"  %  fangshi)

        print("点餐")                                           ======>打印两边chi()函数    美团外卖和饿了么各执行一次

      chi("美团外卖")      实参(在函数调用的时候,实际你给的函数传递的值)

      chi("饿了么")

    ②关键字参数(形参)       在实参调用的时候,可以指定参数的值是多少

    例如:           (按照名称给形参赋值)

      def chi(a,b,c):

        print(a)

        print(b)                          =====> a = 2,b = 3,c = 1

        print(c)

      fn(1,2,3)

      fn(b = 3,a = 2,c = 1)

    ③混合参数     顺序(先写位置参数,后写关键字参数,否则会报错)

    例如:

      def gn(name,age,sex,address,hobby)

        print("姓名是%s,年龄是%s,性别是%s,家住地址是%s,爱好是%s"  %  (name,age,sex,address,hobby))

      gn("刘怀源",22,"女","济源市","美食")                           (位置参数)

      gn(name="刘怀源",address = "济源市",hobby = "美食",sex = "女",age = 22)                  (关键字参数)

      gn("刘怀源",22,女,hobby = "美食",address = "济源市")                    (混合参数)

    (2)站在形参的角度上有三种参数 ①位置参数 ② 默认值参数  ③默认值参数和位置参数混着用

    ①位置参数

    ②默认值参数

    例如:

      def regist(id,name,sex="女")       sex = 女    已经给sex赋予值了   如果是,下面就不需要再写,此时就是默认值参数

        print("录入学生信息:id%s,名字:%s,性别:%s"  %  (id,name,sex))

      regist(1,"刘怀源","女")                                  (位置参数)

      regist(2,"郭晓君",)                                    (默认值参数)

      regist(3,"张舒文","男")              如果实际不是默认值参数的话,就自行添加

    ③默认值参数和位置参数混着用

    顺序(先写位置参数,后写默认值参数)

      def xinxi(name,age,sex = "女",address = "焦作市"):
        print("姓名是%s,年龄:%s,性别:%s,地址是%s" % (name,age,sex,address))
      xinxi("刘怀源",22)
      xinxi("郭晓君",22,)
      xinxi("刘亚楠",23,)
      xinxi("张舒文",22,"男")

     打印出来的结果:

      姓名是刘怀源,年龄:22,性别:女,地址是焦作市
      姓名是郭晓君,年龄:22,性别:女,地址是焦作市
      姓名是刘亚楠,年龄:23,性别:女,地址是焦作市
      姓名是张舒文,年龄:22,性别:男,地址是焦作市

     五.函数的实际运用

    例如:

     1+2+3+4+5+..........+100 = ?

      def sum(n)

        s = 0

        count = 1

        while count < = n:

          s = s + count

          count = count + 1                          对功能的封装

        return s

      ret = sum(100)

      print(ret)

     计算n是奇数还是偶数

      def fn(n)

        if n %2 == 0:

          return"偶数"

        else:

          return"奇数"

      ret = fn(一个数)                         ====>print(fn(一个数))

      print(ret)

    作业题:

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

      def func(str):

        num = 0

        zimu = 0

        kongge = 0

        qita = 0

        for i in str:

          if i.isdigit():

            num += 1

          elif i.isalpha():

            zimu += 1

          elif i.isspace():

            kongge += 1

          else:

            qita += 1

        return (num,zimu,kongge,qita)

      ret = func("123defg  *&%%")

      print(ret)

    2.写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。

       def func(name,age,stu,sex="男"):
         f = open("sutdent_msg",mode="a",encoding="utf-8")
         f.write("名字是:%s,性别是%s,年龄是%s,学历是%s " % (name,age,stu,sex))
         f.flush()
         f.close()
         return (name,sex,age,stu)
       while 1:
         tuichu = input("请输入Q或q退出")
         if tuichu.upper() == "Q":
           break
         name = input("名字:")
         age = input("年龄:")
         stu = input("学历:")
         sex = input("性别:")
         if sex == "女":
           ret = func(name, age, stu, sex)
         else:
           ret = func(name, age, stu)
         print(ret)

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

       def func(f,old,new):
         import os
         with open(f,mode="r",encoding="utf-8") as f1,open(f+"副本",mode="w",encoding="utf-8") as f2:
           s = f1.read()
           ss = s.replace(old,new)
           f2.write(ss)
         os.remove(f)
         os.rename(f+"副本",f)
       func("chi","菜","肉")

    4.写一个函数完成三次登陆功能

      def func(name,password):

        num = 1

        while num <=3 :

          n1 = input("请输入用户名:")

          p1 = input("请输入密码:")

          if n1== name and p1 == password:

            print("登录成功")

            break

          else:

            print("登录失败")

          num = num + 1

      func("刘怀源","123")

  • 相关阅读:
    笨方法学python中执行argv提示ValueError: not enough values to unpack (expected 4, got 1)
    VMware workstation安装
    Redis bigkey分析
    MySQL drop table 影响及过程
    MySQL 大表硬连接删除
    ES elasticsearch 各种查询
    ES elasticsearch 各种聚合
    ES elasticsearch 聚合统计
    ES elasticsearch 实现 count单字段,分组取前多少位,以地理位置中心进行统计
    MySQL行溢出、varchar最多能存多少字符
  • 原文地址:https://www.cnblogs.com/lhy979/p/9300014.html
Copyright © 2011-2022 走看看