一步步学习Python---5

我们这个系列是新的开始,从零开始学习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   #返回元祖   a = funa()  拆包:jia,jian = a

四.递归和匿名函数

递归函数(回调函数): 函数自己调用自己

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):     # range() 取头不取尾
        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)

手机号码:
这个在文章开头就给大家演示了,这里就不多赘述了

六.结语

从四月初开始写博客不知不觉也有一个月了,粉丝也快两百了,感谢大家的支持,祝大家五一快乐,我们周三见.

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寰( *^_^* )

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值