L3 迭代及函数

在进入今天的学习之前,我们首先回顾下上一课及之前学习的内容。

1.Python内置IDE名称为IDLE,与Python解释器交互,解释器运行Python代码。

2.解释器由上而下,逐行执行,报错即退出。

3.Python提供了一个非常强大的标准库,L2详细介绍了标准库,模块,函数的关系,使用相关的模块或函数之前我们需要先import,当然还有很多第三方库,后面碰到再提。

4.例子所使用的是数据结构之一的列表,中括号包围。

5.Python控制语句之一的for循环冒号引入缩进的代码组,Python严格要求缩进。一般用Tab键,设置为四个空格,当然也有八个空格的。

6.介绍了变量,不需要预先声明变量类型,赋值时会自动赋上相应数据类型。

7.通过“”.join()方法将列表转换为字符串,当然我们可以直接修改下上一节课的代码,the_name = random.choice(girls),ramdom模块里的choice函数,该方法返回一个列表,元组或字符串的随机项,返回类型为str字符串。

8.print/input/range/sample/sleep函数,其中包含内置函数,否则需要import模块再调用具体的函数方法。

9.=一个等号是赋值,==两个等于号是比较操作符。

10.贴下上一节课代码,再次复习一下。其中sample函数更改为choice函数。在此例中,的确使用choice函数要优于sample函数。sample函数返回的是列表切片。

上节课修改后的代码

今天着重来学习下for循环,range函数,与函数导入。

for循环:

例1:请打印五遍以下内容,“All work and no play makes jack a dull boy.”

有人知道这句话出处么?(我最爱的电影)

好,如果我让你打印十遍,一百遍呢?print一百次么?显然我们还能有更好的办法。如果提前知道了我们需要循环的次数,接下来我们要学的for循环出场了。使用for循环我们要定义一个迭代变量,一般i,j,k,m,n用的较多。循环五次,甚至五百次,我完全可以使用两行代码来代替。

使用for循环

例2: 现在定义一个变量students,这是一个列表,里面包含了三年二班所有同学的名字,假设四位同学:张三,李四,孙二,王八。分别打印每位同学的名字。

报错啦。。

呼啦,报错啦。why?啊想起来了,要加引号扩起来代表字符串,不然就是变量了。

报错again。。

好吧,为什么还继续报错哩。。。

报错是Syntaxerror语法错误,以后看到类似报错就去检查是不是标点符号中英文混用了,不只是引号,包括逗号,都要用英文状态下的符号。原来我上述代码中引号用的是中文状态下的引号。该错误很常见,所以养成良好的书写习惯。划重点!!!

报错again and again。。。

So,这次又是??

好吧,报错这次不是语法错误了,是NameError,提示name ‘stuends’ is not defined,说stuends这个名字未定义。原来变量我打错了,应该是students,而不是stuends,这个错误也经常容易犯,犯错不可怕,重要的是调试的时候能快速根据报错定位原因,减少不必要的时间浪费。这个也要划重点!!!好啦,好啦。

好吧,work了。。

在此过程中,for循环将各个学生的名字依次赋给我们的循环迭代变量i,当然你不想用i想用其它字母代替完全ok,最后print()这里要同样替换成你所用的字母。顺便复习下,students后的冒号别忘记了,并且冒号引入代码,这里我们只是打印,该行代码要缩进。

例3: 除了列表,我们甚至可以迭代处理字符串,因为字符串也是序列,可以迭代处理字符串中每一个字符。

浪漫不?

大家自己动手敲以下,看看打印什么。是不是很好玩 ## 注意空格和标点哦~学会好好使用for循环哦,你肯定会爱上它的~

range函数:

前面for循环中例1是for i in range(5): ,range有个最基本的形式就是接收一个整数参数指示for循环的次数。虽然我们print那行代码没有对i进行任何处理,这并没有关系,毕竟我们代码都成功运行了不是么。除此之外,range函数还能怎么用呢?

我们可以使用help请求range的帮助文档。

学会使用help函数哦~

由此可以看出我们可以采用两种方式调用range函数。一种是省略了控制范围的start值,只有一个参数,默认是0开始,不包括该整数。 比如:

使用list函数便于理解

还有两个参数,这是起始和结束,同样不包括结束值。省略了步长值。步长值的意思是,每次加上多少。默认为1。

不包括8

如果三个参数的话,就是严格按照start,stop,step的格式了。起始值,结束值,步长值。

步长值为2

这里要指出的是,步长值可以为负数。比如:

不包括3,所以只到4

如果起始值大于结束值,步长值是不能省的,因为默认是为1的。如果不加上那个-1,也不会报错,返回一个空列表。但是你若故意为之的话,可能要去看下脑科。咦,为什么我突然想到了德国骨科 #_#

范围空列表,无意义

注⚠️:range函数是很常用的一个函数,希望掌握。

导入函数

Python中导入函数只有一个import语句,但是可以有两种用法。

一种是只导入模块,不特别指定使用哪个函数,然后根据需要调用所需的函数,比如,import time,导入time模块,如果需要调用time模块提供的sleep函数,time.sleep(2),这种也叫点记法。

导入time模块,再调用sleep函数

再比如,

导入random模块,再调用randint函数

先导入random模块,然后调用randint函数,该函数提供两个整数,从中得到所要的范围,包括范围上下界的两个整数。我们可以同样使用help查看下:

我们不能单独help(randint),需要把该函数所属的模块带上。range [a, b],including both end points, 包含了a,b这两个整数。

另一种方式是,从一个模块导入一个特定的函数这样可以直接调用这个函数,而无需限定,在函数前再加上模块名,也就是我们之前提到的无需使用点记法就可以直接调用该函数这种方式为from x import y, 第一个x为模块,第二个y为函数。举例:

直接调用datetime函数的today()方法
直接调用sleep函数

这两种import方法都很常见,根据个人的习惯使用即可。个人推荐第一种,直接import模块,然后需要什么函数再调用。除非代码量很少,明确知道自己需要什么函数。

这里提一下,有一种情况我们只能使用第一种。就是两个模块A和B有个同名的函数,比如,from A import F, from B import F,如果出现在同一段代码中,直接调用F(),Python解释器如何知道要调用哪个?所以这种情况我们直接,import A,import B,然后采用A.F() 和B.F()的方法即可。

导入模块和函数是比较重要的概念,后续我们写代码离不开它,希望好好理解一下。也可以网上多找找其它例子多敲敲。

作业:希望认真掌握每一节为数不多的内容。谢谢。

BTW,有人在看么?

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>