python for循环与函数

循环控制

for循环表达式

for循环通常用来遍历可迭代的对象

注意:

~for...in...属于固定格式  

~iterable表示可迭代对象

~i是变量名(可更改),代表可迭代对象里面的每个元素

while循环九九乘法表

i=1

while i <10:

       j=1

       while j<=i:

              print('*',end="")

              j +=1

i=i+1

print()

for循环九九乘法表

for i in range(1,10):

      for j in range(1,i+1):

             print(f'{j}*{i}={j*i}',end=' ')  #end='\n'

       print()

while和for区别例子:

li = [1, 2, 3, 4]
l = len(li)  # 4
# 设置循环结束条件
num = 0
while num<4:
    print(li[num])
    num +=1
print('-'*100)
for i in li:
    print(i)

函数

函数定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

语法格式

def 函数名 (参数1,参数2)

      代码块

函数名() # 调用函数

~先定义函数,后调用

~如果没有写调用函数,函数里面的代码不会执行

~当执行完函数里面的代码,会再次回到调用函数的位置

函数作用

提高应该模块性与代码复用性

函数参数

可变类型参数与不可变类型参数:

~不可变类型参数在函数体内对变量重新赋值,相当于重新开辟了一块内存保存值

~可变类型参数在函数体内可以改变原有值

位置参数

~位置参数也就是实参与形参顺序一一对应,不论变量名

关键字参数

~以形参=实参形式指定,不论参数位置

默认值参数

~函数定义是已经先定义值,如果不传实参,形参会使用默认值

可变长度参数

1.*args:数据类型为元组

2.**kwargs:需要以键值对的形式传参,打包成字典的数据类型

例子:

#定义函数
def multi_table():
    for i in range(1, 10):
       for j in range(1, i + 1):
        print(f'{j}*{i}={j * i}', end=' ') # end='\n'
       print()
#调用函数
multi_table()
#不可变的参数
def text(a): # a为形参
    a=10 #整数是不可变类型,改变值相当于重新开辟了内存地址
    print(a)

a=1
text(a)
print(a)
#可变参数
def text(a):
    a.extend([1,2])#列表是数据可变类型,改变是,是同一个东西
    print('inner',a,id(a))

a = [1,2,3,4]
text(a)
print('out',a,id(a))
#位置参数
def person(name,age):
    print(f'你的姓名是{name},年龄是{age}')

person('zhangsan',18)#实参与形参位置是一一对应的
#关键字参数
def person(name,age):
    print(f'你的姓名是{name},年龄是{age}')

person(age=18,name='zhangsan')#关键字不受位置影响
#默认值参数
def person(name='zhangsan',age=19):
    print(f'你的姓名是{name},年龄是{age}')

person()#已经定义好了,传与不传没有关系  你的姓名是zhangsan,年龄是19
#*args
def text(*agrs):#接收是会转化为元组数据类型
    print(agrs)

text(1,2,3,4,5)#不传也没事,返回空元组
#**kwargs
dic=dict(name='zhangsan',age=18)
print(dic)

def text(**kwargs):
    print(kwargs)
text(a=1,b=2)#转化为字典类型
# 解包
a,b,c=(1,2,3)
print(a,b,c)

函数返回值

~使用return关键字返回内容

~将内容返回到函数调用处

~函数体中没用return语句时,函数运行结束,则默认返回None,也被称为隐含返回值

例子:

def text(a, b):
    c = a + b  # c 属性函数内部的值
    return c  # 将值返回到函数调用位置


# 拿到c的值,永久保存
num = text(1, 2)
print(num)


#摄氏度
def c_tem():
    c_t = 18
    print(f'摄氏度{c_t}')
    return c_t
#华氏度
def f_tem(c_t):
    f_t = c_t/1.8+32
    print(f'华氏度{f_t}')

c=c_tem()
f=f_tem(c)
def text():
    #局部作用域,作用域范围是函数体内
    a,b,c = (1,2,3)
    return a,b,c

print(text())#(1, 2, 3)

#全局变量

例子1:
a = 100
def text():
    print(a)# 全局的a,如果局部没有,去全局找

def text2():
    a = 200  # 局部的,全局的同时存在,优先使用局部的变量
    print(a) #200
text()
text2()
print(a)
#global
a=100
def text2():
    # global a #可以通过global告诉系统a是全局的
    a=20  #也可以在内部声明局部
    a = a+10 #系统分不清等号后的a是局部的还是全局的
    print(a) #200
#nonlocal
def text():
    b=6
    def text2():
        nonlocal b #父级作用域
        b=7 #只在text2里面有效
    text2()
    print(b)
text()
#bulit--in int float str
#范围:bulit--in>global>enclosing>local
# 优先使用:bulit--in<global<enclosing<local

递归函数

介绍:

函数直接或间接调用函数本身,则该函数称为递归函数

def myfunc(n):
    if n > 1:
        # print(n)
        return n+myfunc(n - 1)
    else:
        return 1

sum = myfunc(3)
print(sum)

内置文件函数

#返回1-10的奇数函数

for循环

for i in range(1,11):
    if i%2 !=0:
        print(i)

#偶数则将改变range(2,11,2)

filter结果为True留下,为False排除

def text(i):
    return i%2==1

print(list(filter(text,range(1,11))))

匿名函数

介绍:

当我们传入函数时,有些时候,不需要重复调用该函数,直接传入匿名函数更为方便,也无序担心函数名冲突,并且还可以将匿名函数赋值给一个变量,再利用变量来调用该函数

def ad(a,b):
    return a+b

print(ad(1,2))

f = lambda a,b:a+b
print(f(1,2))
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猩猩文学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值