Monthly Archives: October 2019

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,有人在看么?

L2 开始你的第一个Python代码吧!

相信各位童鞋已经顺利安装好python了,那么废话少说,咱们直接开始吧.

是不是按照标配开头,咱应该先打印Hello World,#_#哈哈,然后呢?你学到了什么呢?这样,我直接写一段小代码,然后根据这段代码逐行来讲解,以后碰到的知识点我们再慢慢补充.

我贴出代码先:

对,我就是不让你直接ctrl c, ctrl v,怎么样,自己动手敲,谢谢. <( ̄︶ ̄)>

不管看懂多少,请把以上的代码敲在你的IDLE的文本编辑窗口,ctrl s,F5执行,会提示你输入,从我上图的第二行来看,让你从四个女生中选一个,然后解释器执行后会打印结果,并且这个动作会重复3次,你先跑了看看,成功了么?我自己电脑上运行后如下:

好,现在我们来逐行解释:

1.第一行import random, time

意思是你从python的标准库中导入两个模块,名字分别为random和time,这两个模块用逗号分隔,该行其实也可以写成两行

import random

import time

这里你需要理解标准库,模块,函数的概念.用一句话说就是,相关函数的一个集合构成了一个模块,而大量的模块构成了标准库. 函数+模块=标准库. (这么说,你是不是还是有点看不懂?)换种说法吧,就是为什么别人说python好用呢,除了本身语法的简明,还有它的库很全,很多你需要的模块已经有人写好提供了,那我们直接import进来,然后根据这个模块的不同具体功能再调用.这个不同的具体功能可以理解为函数.下面针对该概念我多举一些小例子。之后我会用jupter notebook截图代码,阅读性好点。

sys模块
os模块
datetime模块
time模块
random模块

2.第二行 girls = [“cuihua”, “meili”, “xishi”, “madongmei”]

这意思是我们先定义一个名为girls的变量,不需要提前声明变量类型,直接通过等号赋值后的内容来决定它到底是什么类型的,那么此处girls是一个列表,用中括号[]包围,该列表内有四个元素,由于是字符串,所以我们需要加引号,否则不加会报错,因为不加引号会认为这是个变量的,自己试下。

3.第三行for i in range(3):

这行意思是使用range函数指示for循环的次数,这里是三次。提问:为什么这个range函数我们直接拿来用了,并没有像之前那样import呢?(因为这是我们的内置函数)对了,使用for循环的话,后面要加一个冒号: 换行缩进继续写后续代码,Python代码组可以说只认缩进,一般是四个空格。就是说冒号引入一个缩进的代码组。

4.第四行 the_name = random.sample(girls, 1)

这行意思是,定义一个名为the_name的变量,这个变量是什么呢?它调用了random模块里的sample函数,random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。从girls列表里随机选取一个元素,当然这里我们定义了是四个美眉。

第五行 the_one = “”.join(the_name)

这行意思是,定义一个名为the_one的变量,使用””.join()方法把之前的the_name转换成一个字符串,第四行我们随机抽取了一个美眉,但本质还是一个列表,后续代码需要将其和另外一个字符串变量作比较,由于类型不同无法比,所以我们此处转换一下。

第六行#  print(the_one)

该行是将the_one变量打印出来,怕你不知道系统到底给你选了哪个妹子。但是为什么前面有个井号呢?#是注释掉,也就是说该行并未执行,你自己可以把#删除就打印了。#是单行注释,”’三个单引号开始,三个单引号结束这是多行注释”’,你不嫌麻烦或难看点,可以每一行前面加个#,效果是一样的。

 第七行 your_love = input(“Please input the name from girls list: “)

该行定义一个名为your_love的变量,变量的内容是,使用了一个叫input的内置函数,它接受一个标准输入数据,返回为 string 字符串类型,此处提示是从girls列表里选一个你最喜爱的,所以名为your love了呀,当然,这里如果你填个别的,不在girls里的,也不会报错,并且后续的代码将只会打印else部分内容,为了便于理解,你就老老实实的给我根据提示,从四个美眉里选一个,输入英文字符串即可,不需要加引号。

第八行 if the_one == your_love:

这是if语句,一般和else搭配使用,如果判断条件不止一个,中间会加入elif,==两个等于号是比较操作符,该行if语句结果要么为“True”要么为“False”,如果是True就执行下面的语句,如果是False,就执行else部分的语句。冒号引入新的代码组,那么后续的代码要基于该行代码再次进行缩进。(能理解吧~)

    第九行print(“NB!”)

前面提示过了,该行代码要再次缩进,如果两个变量相等,那么就打印NB!。随机分配的和你心里想要的一样,这还不NB嘛~

 第十行else:

 第十一行  print(“renmingba!”)

如果两个变量不相等,那么就打印renmingba,嗯,认命吧。print函数打印,里面的内容是字符串需要加引号的。不加你再试试,会报错的,之前第二行讲列表里元素是字符串也提到了,不加会认为是变量,会报错提示not defined.

  第十二行time.sleep(3)

使用time模块的sleep函数,指休息三秒中,回到第三行,我们不是循环一共玩了三次么,所以玩一次稍微休息一下下。当然,你厉害不停也是ok的。

总结:希望童鞋们,能认真一点哦,虽然只是一段代码,但对于我们正式的第一节课来说,信息量还是有点大的。我不希望自己写的东西是网上照搬的,也希望能尽力让你们看的有乐趣一点,自己敲的时候,把girls里面的名字换成自己想要的,看看你和那个她有没有缘分吧~~(感觉好傻。。

不要偷懒,多敲敲,不理解的慢慢也会理解的。加油~请把该内容都全部消化掌握,恭喜了,你已经可以写代码了不是么,下一节课更新较慢(能保证一周更新)工作忙,自己也需要时间来学习充实自己。最近休息也不好,真的有点累了。有问题的哪里不懂tg讨论或找我都OK。晚安。 00:30

L1 Python入门介绍及安装

L1 Python入门介绍及安装

了解Python: Python是众多计算机语言里的一种,而计算机语言充当人跟计算机交流的媒介,工具。换句话说,你写的东西,计算机得认。

我们为什么选择Python:相信大家很多人听说过一句话,“人生苦短,我用xx”(xx此处换成你们最喜爱的语言)如果没有,就先Python吧。的确Python入手是比较简单的,比如说它没有把源代码编译为“可执行代码”的概念,而是Python的解释器直接运行你的代码,只要你有心学习,简单入门真的不难。之后放弃看个人了。。

Python历史:

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

1994年:Python 1.0

2000年:Python 2.0

2008年:Python 3.0

2014年:In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible。翻译成人话是,官方宣布Python2.7版本只支持到2020年并且之后没有2.8版本。所以现在网上看到的教程几乎都是针对Python3讲的,我们后续也只讨论交流Python 3版本。

Python作为好用的脚本语言(脚本语言:不需要任何编译,直接解释)之一,它的本质上是一堆命令的集合,逐行执行,报错立刻退出。既然要学习它,首先需要安装,需要根据大家的操作系统选择不同的安装方式,基本分为三种Windows/Mac/Linux,现在大致介绍下如何安装。

下载:https://www.python.org/downloads/ 目前最新是3.8 如果想下载旧点的版本该页面往下拉在Looking for a specific release?下面可找到。如果没有特别需求,就下载最新版的就好了。下图红框中是分别针对不同版本的安装包,点进去。

https://www.python.org/downloads/release/python-380/ 该页面拖到下面Files:

Windows选择:Windows x86-64 executable installer ,python-3.8.0-amd64.exe,是exe文件,直接双击安装。

Mac选择:macOS 64-bit installer ,是pkg包,python-3.8.0-macosx10.9.pkg(或者使用开源包管理器Homebrew,brew install python3)

Linux操作系统,如果redhat系直接yum安装,debian系apt安装。

如果安装中碰到问题,请自行搜索解决,实在报错解决不了,贴出来讨论。

安装好后,我们将使用Python内置的名为IDLE的集成开发环境(IDE)。在计算机上启动IDLE,使用File–>New File,会得到两个窗口,一个是python shell(用来运行python代码),另外一个是Untitled(这是一个文本编辑窗口,如果你的代码比较大段,需要文本编辑器,可以在这里输入代码,保存,然后按F5执行)举例:

第一个窗口是Python内置的>>>提示窗口,这可以从终端窗口直接打python运行,也可以从IDLE运行。我直接打印了一条消息。

第二个就是文本编辑窗口,我写了简单的打印时间,然后ctrl s保存,文件名按照内容取,我这里就直接默认的Untitled,后缀以py结尾,再按F5执行,在第一个窗口出现了以下信息:

====== RESTART: /Users/dgdxy/Untitled.py ======

2019-10-21 02:25:42(把我的py脚本的执行结果打印了出来)

其他工具介绍:如果一直用终端的话,可以考虑ipython,它是一个基于Python Shell的交互式解释器,比默认Shell具有更好的编辑和交互功能;

如果喜欢用IDE的话,Pycharm也很不错, 它是由jetbrains开发的优秀的python IDE;

此外再介绍一种,Jupyter Lab(最早开发ipython工具的项目组开发了iPython Notebook,后名为Jupyter Notebook,Jupyter Lab是其下一代产品),是基于Web的IDE,它的特色是文本+代码,就是可以记笔记,也可以直接运行你的代码,挺推荐的。安装Jupyter Lab前提是确认你安装好了Python基本环境。

每种工具我觉得都是青菜萝卜,各有所爱,自己用习惯顺手就行。在我们刚入门学习阶段不需要太在意,在选择比较工具上浪费太多时间。我自己用的是vi编辑器,不推荐,直接用IDLE我觉得可以满足大家需求了,如果想记笔记并且可以敲代码,可以好好看看Jupyter Lab(https://jupyterlab.readthedocs.io/en/stable/),其余的我没有用过。大家可自行搜索。

最后想多说下,这篇并没有什么实际内容的文章,我下午就开始看书,晚饭前写了40分钟,晚上11点40开始继续写,直至现在。我希望尽可能的不出错,也尽可能的言简意赅,通俗易懂。在有人看的情况下,我保证每周更新,如果您嫌慢,那我又勾起了你学习的兴趣,不是更好么?网上教程好多,网易云课堂的视频也很多,大家可以去看。你哪怕买本书,能坚持啃完,都是厉害的。

作业:1.根据自己的系统安装好Python,选择自己合适的工具。这点很重要。因为装好了,下节课我们就直接开始学习啦!

2.自行了解下Python发展,搞清楚IDE/IDLE的概念。请大家学会碰到问题去搜索。

3:12