我们这个系列是新的开始,从零开始学习Python,我会在每周的1,5更新(偶尔拖更),持续关注,别的不敢说,基础知识还是能让你学明白的.由于上周五拖更了,这次内容会比较多.
一. 函数
函数的定义和调用 作用:封装代码 (将代码用一个容器储存起来,即拿即用) 定义: def 函数名(): 函数体 调用: 函数名() 我们拿上周的作业举个例子:
while True:
number = input("请输入手机号:")
if number[0] == '1' and len(number) == 11 and number.isdigit():
print(f"{number}是手机号")
break
else:
print(f'{number}不是手机号')
用函数可以这样写():
def number():
number = input("请输入手机号:")
if number[0] == '1' and len(number) == 11 and number.isdigit():
print(f"{number}是手机号")
else:
print(f'{number}不是手机号')
下面是关于函数的定义域调用:
二.函数的参数
函数名(x) x称为必备参数 必须传入值 函数名(y = n) y称为默认参数 不传入值时值为n 传入值(m)时为m 不定长参数: (不传入值也不会报错) *args:将多余的值保留 用元祖保留起来 **kwargs:将key = value的值 用字典保留起来
tips:
1.获取参数的顺序: 必备->默认参数->不定长参数(*args->**kwargs) 指定传参(关键字实参) func(y=n,x=m) 2.return(返回值): 返回什么 变量接收到的就是什么 没有返回值时 变量接受的是None 函数中 renturn后面的代码 不会执行(表示函数结束了)
大家可以运行一下这个代码就能够理解我说的是什么意思了
def func(number):
num = number + 5
return num
print(111222333666)
三.函数的作用域
函数外面定义的变量为全局变量 函数里面只能访问 不能修改(看得见摸不着) 不能修改不可变类型 不可变 只能通过重新赋值改变的 字符串,整形,浮点型,布尔型,元祖 可变 可以在原本的基础上进行增删改查的 列表,集合,字典 函数里面定义的变量叫做局部变量 只能在函数里面访问 global 声明函数外部的变量为全局变量 声明之后 就可以对这个变量进行修改 请看以下的例子: 现在我们还要讲一个重要的知识点:闭包 首先:什么是闭包呢? 外层函数返回内层函数的函数体 作用:用来保护 重要的数据(变量) 防止篡改数据
def funa():
live = 50
def funb():
nonlocal live
live += 1
print(live)
def func():
nonlocal live
live -= 1
print(live)
return funb,func
四.递归和匿名函数
递归函数(回调函数): 函数自己调用自己
def func(n):
if n <= 1:
return 1
else:
return n*func(n-1)
a = func(5)
print(a)
匿名函数: 需要通过一个变量接收 匿名函数 通常搭配内置函数进行使用
五.作业和上节课的答案(仅供参考)
九九乘法表:
for a in range(1, 10):
for b in range(1, a+1):
print('%d * %d = %d\t'%(a, b, a*b), end=" ")
print(" ")
移除重复元素:
'''
for 第一次拿一个 第二次拿第二个 依次类推
'''
s = list(input("请输入一个字符串:"))
m = []
for i in s:
if i not in m:
m.append(i)
m.sort(reverse=False)
print(''.join(m))
判断水仙花数: 我这里提供了两种方法:
sxh = []
for i in range(100,1000):
a = i//100
b = i//10%10
c = i%10
if i == a**3+b**3+c**3:
sxh.append(i)
print(sxh)
for x in range(1,10):
for y in range(0,10):
for z in range(0,10):
s1 = x*100+y*10+z
s2 = x**3 + y**3 + z**3
if s1 == s2:
print("水仙花数有:%ld"%(s1))
找出两个列表中的相同元素:
'''
方法一:
集合
转换类型为集合
取交集
方法二:
遍历列表
判断a列表里面的元素是不是存在b列表当中(in)
或者判断a列表里面的元素是不是与b列表里面的元素相等
输出
'''
a = [1,2,3,4]
b = [1,2,3,4,5,6,7]
set_a = set(a)
set_b = set(b)
set_c = set_a & set_b
print(set_c)
a = [1,2,3,4,3,3,3]
b = [2,3,4,5]
c = set()
for i in a:
for j in b:
if i == j:
c.add(j)
print(f'两个列表中相同的元素有{c}')
随机生成密码:
'''
思路:
统一大小写
遍历字符串,获取每个字符
转换为列表
统计
输出
进阶:
用字点保存数据,避免重复
补充:
字符串的统计str.count(字符)
'''
a = 'jdshgfdhsfjkdshjfhdsbfbdsbyfby'
a = list(a)
for i in range(97,123):
print(f'{chr(i)}的出现次数为:', a.count(chr(i)))
s = input("请输入a`z无论大小写的英文字母:")
s = s.upper()
dic = {}
for i in s:
num = s.count(i)
dic[i] = num
print(dic)
手机号码: 这个在文章开头就给大家演示了,这里就不多赘述了
六.结语
从四月初开始写博客不知不觉也有一个月了,粉丝也快两百了,感谢大家的支持,祝大家五一快乐,我们周三见.
|