#while循环

-一个循环语句

-表示当某条件成立的时候就循环

-不知道具体循环次数,但能确定循环的成立条件时候用while循环

-while语法:

    while 条件表达式:

         语句块

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

    while 条件表达式:

         语句块1

    else:

          语句块2

 

 

benqian=100000
year=0
while benqian<200000:
    benqian=benqian*(1+0.067)
    year+=1
    print("第{0}年拿了{1}块钱".format(year,benqian))
else:
    print("终于翻倍了")
    print("好辛苦啊")

#函数

-先定义

-后调用

#定义一个函数
#只是定义的话不会被执行
#1.def关键字,后跟一个空格
#2.函数名自己定义
#3.后面括号和冒号不能省,括号内可以有参数
#4.函数内所有的代码缩进

def func():
    print("我是一个函数")
    print("我要完成一定功能")
    print("我结束了")

#函数的调用
#直接函数名后面跟括号
func()

#函数的参数和返回值

·参数:负责给函数传递一些必要的数据或者信息

-形参:在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参

-实参:在调用函数的时候输入的值

#参数的定义和使用
#参数person只是一个符号,代表的是调用的时候的某一个数据
#调用的时候,会用p的值代替函数中所有的person


def hello(person):
    print("{0},你肿么咧".format(person))
    print("哪里不舒服吗")

#return语句的使用
#函数打完招呼之后返回一句话

    return "我已经和{0}打完招呼了,{1}不理我".format(person,person)

p="铭铭"
rst=hello(p)
print(rst)

·返回值:函数的执行结果

-使用return关键字

-如果没有return,默认返回一个None

-函数一旦执行return语句,则无条件返回

#return案例2

def hello(person):
    print("{0},你肿么咧".format(person))
    return "哈哈哈我提前结束了"
    print("哪里不舒服吗")

p="铭铭"
rst=hello(p)
print(rst)
#九九乘法表
for row in range(1,10):
    for col in range(1,row+1):
        print(row*col,end=" ")
    print(" ")


#定义一个函数,打印一行九九乘法表
def printLine(row):
    for col in range(1,row+1):
        print(row*col,end=" ")
    print(" ")
for row in range(1,10):
    printLine(row)

#四类函数

-普通函数

-默认参数

-关键字参数

#关键字参数案例
def stu(name,age,addr):
    print("I am a student")
    print("我叫{0},我今年{1}岁,我住{2}".format(name,age,addr))

a="ding"
n=18
addr="我家"
#普通参数,只能按照位置传递,容易出错
stu(a,n,addr)

-收集参数

·把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中】

·语法:

   def func(*args):

      func_body

      按照list使用方式访问args得到传入的参数

   调用:

      func(p1,p2,p3...)

·参数名args不是必须这么写,但是,我们推荐直接用args,约定俗成

·参数名args前需要星号

·收集参数可以和其他参数共存

#收集参数代码
#函数模拟一个学生进行自我介绍
#args把他看做一个list
def stu(*args):
    print("Hello 大家好,我自我介绍一下:")
    #type函数作用是检测变量的类型
    print(type(args))
    for item in args:
        print(item)

stu("ddu",18,"东北","dudu","single")
stu("周大神")

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

·把关键字参数按照字典格式存入收集函数

·语法:

   def func(**kwargs):

      func_body

   调用:

      func(p1=v1,p2=v2,p3=v3......)

·kwargs一般约定俗成

·调用的时候,把多余的关键字参数放入kwargs

·访问kwargs需要按字典格式访问

 

#收集参数案例
#自我介绍
#调用的时候需要使用关键字参数调用
def stu(**kwargs):
    #在函数体内对于kwargs的使用不用带星号
    print("Hello 大家好,我自我介绍一下:")
    print(type(kwargs))
    #对于字典的访问
    for k,v in kwargs.items():
        print(k,"---",v)

stu(name="ddu",age=18,addr="东北",lover="dudu",work="single")
print("*"*50)
stu(name="周大神")

收集参数混合调用的顺序问题

·收集参数,关键字参数,普通参数可以混合使用

·使用规则就是,普通参数和关键字参数优先

·定义的时候一般找普通参数,关键字参数,收集参数tuple,收集参数dict

 

#收集参数混合调用案例
def stu(name,age,hobby="没有",*args,**kwargs):
    print("Hello 大家好")
    print("我叫{0},今年{1}大了.".format(name,age))
    if hobby=="没有":
        print("我没有爱好")
    else:
        print("我的爱好是{0}".format(hobby))

    print("*"*20)
    for i in args:
        print(i)
    print("#"*30)

    for k,v in kwargs:
        print(k,"---",v)

#调用
name="duud"
age=18

stu(name,age)

stu(name,age,hobby="游泳")

收集参数的解包问题

·把参数放入list或者字典中,直接把list/dict中的值放入收集参数中

#收集参数的解包问题

def stu(*args):
    print("哈哈哈哈哈哈")
    n=0

#n用来表示循环次数,主要用来调试
    for i in args:
        print(type(i))
        print(n)
        n+=1
        print(i)


stu("dudu","didi",19,20)

l=list()
l.append("dudu")
l.append(20)
l.append(230)

stu(l)

同理,dict类型收集函数一样可以解包,但是需要用两个星号

 

 

#函数文档

·函数的文档作用是对当前函数提供使用相关的参考信息

·文档的写法:

   -在函数内部开始的第一行使用三字符串定义符

   -一般具有特定格式

·文档查看

    -使用help函数,形如help(func)

   -使用doc

#文档案例
def stu(name,age,*args):
    '这是文档'
    print("This is hanshu stu")
help(stu)

stu._doc_