Python基础-day04
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 可以多个数据,多个数据需要用都好隔开 调用者得到的结果是元组。
不可变数据类型:在函数内被修改 不会影响原来的值
可变数据类型 在函数内被修改 会影响原来的值
面试可能会问的
变量的作用域
作用域:变量的使用范围
全局变量:定义在程序里 顶行定义的变量
局部变量:在函数(代码块)里定义的
进程:正在运行的程序叫进程
线程:轻量级进程
一个进程里至少有一个线程,线程之间数据是共享
进程数据是不共享的