zoukankan      html  css  js  c++  java
  • while 、函数、参数

    while 循环

    • 一个循环语句
    • 表示当某个条件成立时就循环
    • 不知道具体循环次数,但能确定循环的成立条件的时候用while循环
    while 条件表达式:
        语句块
    

      

    例1 :如果年利率为6.7%,本利是每年翻滚,则多少年后本钱会翻倍

    benqian = 10000
    year = 0
    while benqian <20000:
        benqian = benqian * (1+0.067)
        year +=1
        print("第{0}年拿了{1}快钱".format(year,benqian))

    while ... else... 循环

    while 条件表达式:
        语句1
    else:
        语句2

    如例1,当钱翻倍时,用print打印出此时的心情

    benqian = 10000
    year = 0
    while benqian <20000:
        benqian = benqian * (1+0.067)
        year +=1
        print("第{0}年拿了{1}快钱".format(year,benqian))
    else:
        print("大爷的,钱终于翻倍了")

    函数

    • 代码的一种组织形式
    • 一个函数一般完成一项特定的功能
    • 函数使用 
      • 函数需要先定义
      • 使用函数,俗称调用

    定义一个函数,只是定义的话不会执行,

    1. def 为关键字
    2. 函数名自己定义
    3. 后面括号和冒号不能省略,括号内可以有参数
    4. 函数内所有代码缩进
    def func():
        print("我是第一个函数")
        print("我要完成一定的功能")
        print("我要结束了")

    函数调用:直接函数名后面跟括号

    def func(): #定义函数 
        print("我是第一个函数") #函数用缩进分割
        print("我要完成一定的功能")
    print("我要结束了") #这行不属于函数
        
    func() #调用函数

    函数的参数和返回值

    • 参数:负责给函数传递一些必要的数据或者信息 。形参(形式参数):在函数定义的时候用到的参数内有具体值,只是一个占位符号,成为形参 ;   实参 (实际参数):在调用函数的时候输入的值          
    • 返回值:函数的执行结果,使用return关键字,如果没有return,返回一个None,函数一旦执行return语句,则无条件返回,即结束函数的执行
    #参数lisi只是一个符号,代表的是调用的时候的某一个数据
    #调用的时候,会用 p 的值代替函数中所有的 lisi
    def hello(lisi):
    print("{0},你好".format(lisi))
    print("我很好")

    return '我已经和{0}打过招呼了,{0}不理我'.format(lisi)

    p = "张三"
    rst= hello(p)
    print(rst)

    运行结果:

       张三,你好
       我很好
       我已经和张三打过招呼了,张三不理我

    return 例2
    def hello(lisi):
        print("{0},你好".format(lisi))
        return "提前结束了"
        print("我很好")
    
        return '我已经和{0}打过招呼了,{0}不理我'.format(lisi)
    
    p = "张三"
    rst= hello(p)
    print(rst)

    运行结果:

      张三,你好
      提前结束了

    参数

    参考:

    https://www.cnblogs.com/bingabcd/p/6671368.htm

    参数分类:

    • 普通参数
    • 默认参数
    • 关键字参数
    • 收集参数

    普通参数:定义的时候直接定义变量名,调用的时候直接把变量或者值放入指定位置

    def  函数名 (参数1 ,参数2,,,)
        函数体
    
    调用
    函数名(value1,value2,。。。。)
    
    调用的时候,具体值参考的是位置,按位置赋值

    默认参数

    • 形参拥有默认值
    • 调用的时候,如果没有对相应形参赋值,则使用默认值
    def func_name(p1=v1,p2=v2.....):
          func_block
    #调用1
    func_name()
    
    #调用2 
    value1 = 100
    value2 = 200
    fuunc_name(value1,valve2)

    练习

    def reg(name,age,gender="male"):
        if gender == "male":
            print("{0} is {1} and he is good student ".format(name,age))
        else:
            print("{0} is {1} and she is a good student".format(name,age))
    
    reg("mingyue",21,)
    reg("xiaojing",23,"female")
    
    结果:
    mingyue is 21 and he is good student 
    xiaojing is 23 and she is a good student

    关键字参数

    def  func(p1=v1,p2=v2,,,,,):
        func_booy
    
    调用函数:
    
    func(p1=valve1,p2=vale2,,,,,,,)

    例1:

    def stu(name,age,addr):
        print("I am a stident")
        print("我叫{0},我今年{1}岁了,我住{2}".format(name,age,addr))
    
    n = "jingjing"
    a = 18
    addr = "我家"
    #普通参数,只能按照位置传递,容易出错
    stu(name,age,addr)

    换成关键字参数

    def stu_key(name="No name",age=0,addr="No addr"):
        print("I am a stident")
        print("我叫{0},我今年{1}岁了,我住{2}".format(name,age,addr))
    
    n = "jingjing"
    a = 18
    addr = "我家"
    #关键字参数,位置发生变化,不会出错
    stu_key(age=a,name=n,addr=addr)

    收集参数

    • 把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
    def func(*args):
        func_boby
        按照list使用方式访问安args得到传入的参数
    
    调用
    func(p1,p2,p3,......)
    • 参数args不是必须这样写,但是,我们推荐直接用args,约定俗成
    • 收集参数可以和其他参数共存
    • 参数args前需要由星号 *

    例1:模拟一个学生进行自我介绍,但具体内容不清楚

    def stu(*args):
        print("Hello 大家好")
        for itme in args:
            print(itme)
    stu("liuyang",18,"北京朝阳区","wangxiaojing","dansheng")
    stu("zhoudashen")
    stu() #可以为空
    
    结果:
    Hello 大家好
    liuyang
    18
    北京朝阳区
    wangxiaojing
    dansheng
    Hello 大家好
    zhoudashen
    Hello 大家好

    收集参数之关键字收集参数

    • 把关键字参数按字典格式存入收集参数
    • kwargs一般约定俗成
    • 调用的时候,把多余的关键字参数放入kwagrs
    • 访问kwagrs需要按字典格式访问
    def func(**kwargs):
        func_booy
    
    调用:
    func(p1=v1,p2=v2.......)

    例1

    def stu(**kwargs):
        print("Hello 大家好")
    
        for k,v in kwargs.items():
            print(k,":",v)
    
    stu(name="wanglan",age=18,addr="北京朝阳区")
    print("*" * 20)
    stu(name="zhangsan")
    
    结果:
    Hello 大家好
    name : wanglan
    age : 18
    addr : 北京朝阳区
    ********************
    Hello 大家好
    name : zhangsan

    **kwargs 类型为字典,调用时要用items函数

    def stu(name,age,*args,hobby="没有",**kwargs):
        print("大家好")
        print("我叫{0},今年{1}岁了".format(name,age))
        if hobby == "没有":
            print("我没有爱好")
        else:
            print("我的爱好是{0}".format(hobby))
        print("=" *  20)
        for i in args:
            print(i)
        print("=" * 20)
        for k,v in kwargs.items():
            print(k,"=",v)
    name = "liuyang"
    age = 19
    stu(name,age)
    stu(name,age,hobby="游泳")
    stu(name,age,"王晓静","刘石头",hobby="游泳",hobby2="吃饭")

    结果:

    大家好
    我叫liuyang,今年19岁了
    我没有爱好
    ====================
    ====================
    大家好
    我叫liuyang,今年19岁了
    我的爱好是游泳
    ====================
    ====================
    大家好
    我叫liuyang,今年19岁了
    我的爱好是游泳
    ====================
    王晓静
    刘石头
    ====================
    hobby2 = 吃饭

     ha

  • 相关阅读:
    2017博普杯 东北大学邀请赛(B. Drink too much water)(贪心+树链剖分)
    AGC018D Tree and Hamilton Path(树+树的重心)
    BZOJ2843:极地旅行社
    P++ 1.0.5
    BZOJ1052:[HAOI2007]覆盖问题
    BZOJ3098:Hash Killer II
    BZOJ2784:[JLOI2012]时间流逝
    BZOJ2282:[SDOI2011]消防
    BZOJ1875:[SDOI2009]HH去散步
    Codeforces 504 A (Round #285 div.1 A) Misha and Forest
  • 原文地址:https://www.cnblogs.com/wanglan/p/9242373.html
Copyright © 2011-2022 走看看