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("大爷的,钱终于翻倍了")
函数
- 代码的一种组织形式
- 一个函数一般完成一项特定的功能
- 函数使用
- 函数需要先定义
- 使用函数,俗称调用
定义一个函数,只是定义的话不会执行,
- def 为关键字
- 函数名自己定义
- 后面括号和冒号不能省略,括号内可以有参数
- 函数内所有代码缩进
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