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\n" % (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")

 

posted @ 2018-07-12 16:08  Sunny_l  阅读(479)  评论(0编辑  收藏  举报