让python飞:形象理解python for in循环、嵌套循环、函数、栈内存、形参

在这里插入图片描述
Day05兵马俑求助佛印
话说秦皇下葬时,有大批兵马俑陪葬于地下。其中有个跪佣趁守卫不备,逃了出来。他跪着逃了一路,最后来到了大熊山熊山寺
小佣来到寺前,见寺门上方赫然挂着 ’FOR IN 寺‘三个大字(for … in循环:)。小佣上前敲门,有了圆头方身的和尚出来开门小佣把事情来龙去脉告知,请求师傅收留。和尚本着慈悲之心,答应了下来。他告诉小佣,他法号“佛印”,是这个寺里唯一的和尚兼住持(格式:for 变量 in 容器对象:语句块)。
寺里有一些转笼,佛印可以把一排东西一件一件的偷投进转笼中,最后会生产出不同的产品(执行流程:
遇到for关键字将容器对象中的第一个元素给到变量,执行语句块,
再将容器对象中的第二个元素给到变量,执行语句块,
以此类推…
直到容器对象中最后一个元素也被获取过了,执行完语句块,整个for…in循环就结束了)。
佛印把小佣领进寺门,第一个庭院分左右两个小庭院。左边有一辆两人座的小车在转圈圈(格式:range([start],end,[step])),车头是一个橙子(range对象:),他可以把佛印的东西带进转笼里。车尾是燕尾形状的,不能放东西(特点:含头不含尾 --> [start,end))。其实它里面包含很多东西,一般看不到(1).通过执行完毕range()函数返回给程序一个range对象,此对象是一个惰性序列对象(显示不清晰),可以使用遍历的思想去查看其内容,也可以将其转换为list、tuple等类型再进行运算;),除非用索引机可以(2).它仍然是一个容器对象,有容量/长度,有索引(index),可以通过变量名配合下标访问容器中的元素)。
右边小庭院放着五个转笼(for…in…循环配合容器对象(str、list、tuple、dict、set)使用),第一个转笼上有个很大的纸符(#配合list&str类型使用:lt = [10,20,30,40,50] for i in lt:
print(i,end=" ")),符上排列着各种各样的东西,第二个转笼上有个很大的表,表上同样排列着很多东西。第三个转笼上有个牛肉丸子串,第四个转笼上有个字典(#配合dict对象使用:dic1 = {‘name’:‘韩梅梅’,‘age’:25,‘height’:165.0}#通过键找到值
for k in dic1: print(k + “–>” + str(dic1.get(k)))),第五个转笼上有个大饼。字典上还有个粉红小猪(items),它能将军师和随从分开,让他们分别列队排列(items():
此函数属于dict中独有的函数,一旦执行完毕,返回给程序一个dict_items类型的对象(容器类型,有容量),可以配合forin循环一下子得到key,value…
di = dic1.items()
print(di,type(di),len(di))
—dict_items([(‘name’, ‘韩梅梅’), (‘age’, 25), (‘height’, 165.0)])
for k,v in dic1.items():
print(“k=”,k,“v=”,v)
k= name v= 韩梅梅)。佛印告诉小佣,这些转笼都能工作
继续向上走,进入第二个庭院。庭院内摆放着四只硕大的转笼,笼内还有只小转笼(嵌套循环:循环中再定义循环,就是嵌套循环;)。大转笼上有数字,就像钟表一样,每转一个数字,里面的小转笼就赚一圈(总结:1).外层循环执行一次,内层循环全部执行一遍。2).如果外层循环需要执行m次,内存循环需要执行n次,那么整个嵌套循环一共会执行m * n次)。有个大转笼上贴着东海白胡子老头的照片,里面小转笼上贴着佛印的照片(while 中嵌套 for…in)。有个大转笼上贴着东海白胡子老头,里面也贴着白胡子老头(while 中嵌套 while)。有个大转笼上贴着佛印,里面小转笼贴着白胡子老头(forin 中嵌套 while)。还有个大转笼小转笼都贴着佛印的照片(forin 中嵌套 forin 多)。
继续往上走,是第三个庭院。庭院左边摆着若干个叠在一起的硕大的骰子。佛印告诉小佣,要想入寺,需经过考验。将这一列骰子按点数从小到大排列好。从底部开始,每一次都只能将骰子和上方数字最小的骰子置换。如此循环往复,直至把所有骰子排列完毕即可。小佣顺利完成了考验(for… in 中嵌套 for … in)。
在庭院右边,小佣发现了一只两耳各系有红色条带(①.函数修饰符关键字def开头)的狮子(函数:它是一段功能代码,理解为一种功能行为,在内存中有空间区域,函数需要被调用才能执行(通过函数名来调用);。狮子额头上刻有一只小骆驼(③.函数名:函数的名字(标识符一种,满足规则和规范)),狮子嘴里含有五颜六色的小球。狮子的肚皮上有个开口,开口处接有一个簸箕式样的部件(②.函数返回值类型 有返回值(类型:int、float、str、list…)/没有返回值)。佛印告诉小佣,这狮子名字叫函数。它嘴里的小球,可以拧开用来放东西(④.形参列表:定义在小括号内(可能有形参,也可能没有))。狮子把球吞下去后,在肚子里进行加工(⑤.函数体:一段业务逻辑代码),然后从肚子上的簸箕处产出你想要的东西(return关键字的作用:1).将需要返回的数据给到函数的调用处(调用者)。2).表示函数的结束。4).和return关键字在同一作用域,在其后面不要去定义任何的代码,因为永远不可能被执行到。5).return关键字后面也可以不定义任何的内容,它的作用仅仅意味着函数结束了…)。当然有时候,也产不出东西,这取决于狮子种类。有的狮子就没有产出口,但他们会听你的指令,帮你做事(有返回值(类型:int、float、str、list…)/没有返回值)。
这时寺后面突然传来一阵声音,小狮子头上的小骆驼变得明亮起来(函数被调用)。小狮子立刻从跑向寺后门。只见寺后面是个高台。台上有个貌似打擂用的木架(栈内存:
特点:满足先进后出,分为栈顶和栈底两部分)。木架顶有一只一模一样的小狮子,他在呼唤伙伴。它看到寺里的小狮子跑出来,立刻垂直降到木架底部(压栈),然后只见寺里的小狮子直接升到木架顶部(进栈),不一会功夫,就从木架顶部飞离(出栈),落到地面上。二木架底部的小狮子又升上去,继续在木架顶部工作(升栈)。
小佣被眼前的一切惊呆了,他问佛印师傅,这是只什么样的狮子?佛印师傅告诉小佣。这里一共有四种狮子(自定义函数的四种定义场景:)。第一种狮子嘴里不含球,没有产出口,但他们能听人命令,言听计从(1).无参无返回值)。第二种狮子,嘴里不含球,但是有产出口。他们比较默默无闻,吃的是草,挤的是奶(2).无参有返回值)。第三种狮子,嘴里含有球,但没有产出口(3).有参无返回值)。第四种狮子就是刚才看到的那一种,嘴里含有球,而且还有产出口(4).有参有返回值)。
兵马佣非常惊奇,原来世界上竟然还有如此神奇的生物。同时,他对狮子嘴里的五颜六色球产生了浓厚的兴趣。佛印师傅告诉他,这 狮子嘴里的球啊,也分四种(形参列表的多种定义情况)。第一种球里面本来就有东西,你可以选择放自己的东西进去,也可以不放。(默认参数的使用:代码如下:
def func1(name=“张三”,age=18,height=175.5):
print(name,age,height)
#调用自定义函数(不传递参数):会使用默认参数参与之后的运算
func1()
#调用自定义函数(传递部分参数):传递的部分使用传递内容,其余部分使用默认参数参与运算
func1(“李四”))
第二种球呢就是你得根据球的排列按顺序把东西一样一样的放进去。(一般参数的使用:
代码如下:
def func2(name,age,address):
print(name,age,address)
#调用自定义函数:必须传递参数,而且位置和个数都要对的上
func2(“李雷”,21,“北京”))第三种球不用按顺序,但是你得把你所放的东西颜色得和球的颜色保持一致。(关键字参数的使用:好处:不用记住每个变量的位置
代码如下:
def func3(name,age,address):
print(name,age,address)
#体现在调用自定义函数上:传递类型键值对的组合
func3(address=“上海”,name=“韩梅梅”,age=20))最后一种球有两个,左边的球上有一个小精灵,里面有个牛肉丸串,上面可以放各种东西。右边球上有两个小精灵,里面有个字典,字典上可以放东西。(可变参数的使用:在定义一项功能时,对于参数层面(到底几个不确定),此时可以使用可变参数来实现
参数解释:
*args:接受0~无穷多个单值,存入到一个元祖中返回
**kwargs:接受0~无穷多个键值对组合,存入到一个字典中返回
代码如下:
def func4(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
func4()
func1(0,100,3.14,True,“abcd”,[10,20,30],name=“班长”,age=25))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值