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")

  • 相关阅读:
    [Swift]LeetCode85. 最大矩形 | Maximal Rectangle
    [Swift]LeetCode84. 柱状图中最大的矩形 | Largest Rectangle in Histogram
    [Swift]LeetCode82. 删除排序链表中的重复元素 II | Remove Duplicates from Sorted List II
    [Swift]LeetCode81. 搜索旋转排序数组 II | Search in Rotated Sorted Array II
    [Swift]LeetCode80. 删除排序数组中的重复项 II | Remove Duplicates from Sorted Array II
    [Swift]常用正则表达式
    [Swift]LeetCode79. 单词搜索 | Word Search
    Unreal Enginer4特性介绍-牛B闪闪的UE4
    网站开发和企业级开发有什么区别?
    网站开发和企业级开发有什么区别?
  • 原文地址:https://www.cnblogs.com/lhy979/p/9300014.html
Copyright © 2011-2022 走看看