Python基础-day04

2019-01-11  本文已影响0人  陈small末

list

​ for

​ 函数

for

​ for 变量 in 集合:

​ 重复执行操作

其他语言js java c++:do while

怎么解决问题

​ 分治:当我们遇到一个大难题的时候 我们要分析 把他拆解成若干小问题, 按个解决小问题,等所有小问题解决 就整个问题

break 关键字

​ 跳出当前循环

​ 注意:多层嵌套 只能跳出当前循环

continue 关键字

​ 跳过当次循环,继续下一次

注意:break 和continue 是在循环里使用 其他位置无效

else:

​ while 当循环不满足条件的是被执行

下列代码 else 不会被执行 因为循环条件 一直满足 只不过是用break终止了我们的循环

while True:
    res = input("输入")
    print("-->", res)
    select = input("如果继续,请输入y, 不继续输入n")
    if select == 'y':
        continue
    else:
        break

else:
    print("hehe")

下列code会被执行 原因:i自增 将会不满足循环的条件

i = 0
while i <= 2:
    i += 1
    print("--")
else:
    print("run")

for里面

​ 当for 自动结束循环 那么else将会被执行,当被break强制跳出循环的时候 不会被执行

下列代码 不会被执行 原因:用break给强制退出

for i in range(6):
    if i == 3:
        break
else:
    print("hh")

下列代码 会被执行 原因:for自动结束(正常结束)

for i in range(4):
    print(i)
else:
    print("执行")

函数

作用:帮我们封装代码,封装功能,提高代码复用性

分类:

​ 内置函数:print int bin ord chr input

​ 匿名函数:没有名字 一个简短的语句

​ 递归函数:函数自己调用自己

​ 自定义函数 :我们自己写的一个函数

定义一个函数:

​ def 函数的名字(参数1,参数2, 参数N):

​ 你的各种逻辑代码

​ return 返回值

在定义的时候 函数名 后面的括号里 写的变量名字我们将形参

调用

​ 函数名字(实参1, 实参2,实参N)

​ 要先定义 后调用

​ 函数可以在当前文件 多次调用 也可以在其他文件调用(但是需要先导入该函数)

定义

无参数 无返回值的

def how_to_do():
    print("睡觉")
    print("吃饭")
    print("睡觉")

how_to_do()

有参数 无返回值的

def print_add(num1, num2):
    """
    两个数 求和 并打印结果
    :param num1: int 类型 参与预算的值 之一
    :param num2:  int 类型 参与运算的值 之二
    :return: 无
    """
    c = num1 + num2
    print(c)

无参数 有返回值

def get_randfloat():
    """
        获取0 10 随机的浮点数
    :return:
    """
    tmp = random() * 10
    return tmp

有参数 有返回值

def my_add(n1, n2):
    return n1 + n2

带默认值参数的函数

def increase_data(n1, n2=1):
    print(n1 + n2)

​ 调用:以increase_data为例

​ 我们在调用的时候可以写一个参数 设置的是n1

​ 也可以写两个参数 那么写两个参数 默认值就不生效了

​ 注意:默认值参数 要放在 非默认值参数之后,再之后就不能再写 非默认值参数 错误写法 如下

def testyy(a, b=1, c):
    print(a+b+c)
    
def testjj(a=1,b):
    print(a+b)

参数:

​ 在定义函数的时候 如果我们无法确定 但参与你的运算或逻辑里时 那么我们就可以可虑设置成参数

返回值:

​ 如果调用者 在使用你功能(函数) 期望得到反馈 那么我们给他返回他想要的结果

递归函数

​ 递归:算法

​ 算法: 我们解决一类问题的方法

​ 斐波那契数列--->兔子繁殖

​ 第一个月有一对儿兔子 从第三个月开始能繁殖一对儿兔子 (兔子不能死掉) 问你N个月有多少对儿兔子

​ 斐波那契数列公式:f(n) = f(n-1) + f(n-2)

​ python: 函数在定义的时候 自己调用了自己

def rabbit(n):
    # 如果n是前两个月 那么兔子的数量是定死的也就是1个
    if n in (1,2):
        return 1
    else:
        #三个月以后 才开始使用公式计算
        res = rabbit(n-1) + rabbit(n-2)
        return res

注意:

1 递归函数的出口 要明确

2 递归的层次尽量别超过三层 (层次不要深) 会导致栈溢出

拓展:函数的return 可以多个数据,多个数据需要用都好隔开 调用者得到的结果是元组。

​ 不可变数据类型:在函数内被修改 不会影响原来的值

​ 可变数据类型 在函数内被修改 会影响原来的值

面试可能会问的

变量的作用域

​ 作用域:变量的使用范围

​ 全局变量:定义在程序里 顶行定义的变量

​ 局部变量:在函数(代码块)里定义的

进程:正在运行的程序叫进程

线程:轻量级进程

​ 一个进程里至少有一个线程,线程之间数据是共享

​ 进程数据是不共享的

上一篇 下一篇

猜你喜欢

热点阅读