Python语言入门
文章平均质量分 89
为中国大学慕课《小白学Python》文字版内容,每一课程对应每一文章
leeshuqing
主要从事计算机语言、数据库等技术应用,面向推荐系统、文献分析等应用领域
展开
-
1.1 什么是Python?
欢迎学习《小白学Python》,这门课主要面向非计算机专业学生,不要求大家有以前的编程基础和经验,从零开始,让我们通过一起一点一滴的学习,来掌握这门著名的数据分析语言Python。伴随着信息技术的深入应用,今天的我们几乎每时每刻都在与各种信息系统打交道,比如移动APP、网站等等。正如你了解的那样,这些信息系统都是通过一种被称为计算机编程语言的软件工具而开发设计出来。不过,可能你并没有接触过计算机编程语言,因此,你可以认为计算机编程语言就是积木,可以拼接组装出各种各样的软件模型,而这些软件模型就是..原创 2022-02-13 10:24:24 · 2247 阅读 · 0 评论 -
1.2 Python安装与运行
工欲善其事,必先利其器。我们直接切入主题,不妨先来看看怎么使用Python,即如何安装Python。这里的安装包括两个软件,分别是Python和PyCharm。为什么要装两个呢?其实只装一个Python就可以使用了。但是Python自带的软件在编辑代码方面不是很好用。大家可以在开始菜单中搜索“IDLE”,就可以看到一个简单的代码编辑界面:也可以书写代码并且运行:但是确实非常不好用(需要说明的是,等大家学习好Python后,如果准备考2级,还是要回头学习下如何使用,届时将会很快适应,后期.原创 2022-02-13 15:05:03 · 2019 阅读 · 2 评论 -
1.3 第一个Python程序
下面我们通过一个最简单的例子,先来试试第一个Python程序。打开PyCharm,一般它会自动打开上次建立的项目:右击左边窗格中的项目名称,选择新建,再选择新建一个Python文件。一个项目可以创建很多Python文件,可以分别实现不同的功能。输入新建的Python文件名称,比如Exec,即可回车确定:创建好后,此时不妨输入一个最简单的输出功能,输出著名的Hello world!代码为:print('Hello World!')界面为:这里使用一个print函数.原创 2022-02-13 16:49:29 · 1786 阅读 · 3 评论 -
1.4 进一步了解函数
我们继续在上一次最简单的一个Python程序的基础上,来看看函数的用法。我们修改了代码,大家能看懂这个代码是什么意思吗?str = input() #比如输入bye,str为‘bye’str = str.upper() #此时str为‘BYE’print(str) #输出‘BYE’其实意思是一样的,只是中间这一步先把字符转换为大写,并替换回了原有的str变量。大家从中也看出来了,所谓的Python编程就是这样,一行一行的书写...原创 2022-02-13 17:08:07 · 756 阅读 · 0 评论 -
1.5 首先要学会找错
很多初学者往往认为书写代码最难和最能体现能力的就是将代码书写出来。其实,这并不正确。从经验来看,要想完成一个正确的代码功能,比如一个数据分析任务,代码的书写编辑往往只是第一步,但是由于经验不足和一些无法预料的数据处理问题,通常很难保证写出来的代码能够正确的运行。这时,就需要我们进行代码的调试。这个能力非常关键,也是很多初学者无法直接从书本上学到的本领。那么如何掌握住这种能力呢?第一,就是需要我们熟悉编辑器提供的调试功能,这是最基本的。我们来看一个例子:str = input()str.原创 2022-02-13 19:45:37 · 554 阅读 · 0 评论 -
1.6 Mac安装Python开发环境
考虑到部分同学使用Mac系统,下面介绍下Mac下的相关Python开发方法。由于受众相对小众,介绍可能内容不全,更多内容要做好多搜索的思想准备:)1)安装Python仍然也是在Python官网下载Python安装程序:https://www.python.orghttps://www.python.org选择macOS版本,在历史版本中,仍然建议选择3.7.4版本,如:安装过程非常简单,点击不停的点击“继续”即可完成安装。不同于Windows,这里不需要选择那个Add PATH选原创 2022-02-13 21:40:52 · 1140 阅读 · 0 评论 -
2.1 变量的使用
变量的使用好比给你起名字。在数据分析中,我们需要处理很多数据,但是这些数据本身并不好记忆,而且还有很多相同的数据,比如两个相同的身高数据。所以为了方便,我们可以给这些不同的数据起个不同的名字。在Python语言中,变量定义方法很简单,就是变量名加上赋给的初始值。num = 1这个意思是说定义了一个变量,名称是num,它的初始值为1。可以想象,我们把1这个整数装进一个叫做num的抽屉。相对于变量,这个1我们称之为常量。因此,变量初始值一般都可以通过常量来设置。还有很多初学者觉得很变扭原创 2022-02-14 10:00:47 · 1283 阅读 · 0 评论 -
2.2 整数
作为整数,最有用的功能就是数值的代数计算,也是数据分析中最为常见的基本功能。前面已经介绍过,Python中的共有四种数据类型,其中整数是最为基本的数据类型,不仅常见,而且也是其他数据类型的基础。这些我们后面会有说明。整数可以进行各种代数运算:比如:num = 3 ** 4 % 2print(num)输出为:1。计算方式一般从左到右,因此3的4次方得到81,然后除以2的余数为1,因此最终输出为1。num = 3 + 4 ** 2print(num)输出为:19。此时,会先计原创 2022-02-14 10:43:58 · 614 阅读 · 0 评论 -
2.3 其他数据类型
本次主要介绍整数类型以外的其他三种数据类型,分别是布尔型、浮点数和字符串。首先来看看布尔型。这个古怪的名称来自于一位英国数学家,其实所谓布尔型,就是该数据类型的取值只有两种,即真假,在Python中分别使用True和False来表示(请注意,和变量名称一样前后无需加单引号),也称为逻辑型。一般而言,我们很少直接使用这种类型,更多的情况是利用布尔型变量保留一些逻辑判断结果。flag = 1 > 2print(flag)输出为:False。这里的flag保存的是1和2大小比较的结果,显然输原创 2022-02-14 11:08:26 · 1340 阅读 · 0 评论 -
2.4 不同数据类型的转换之一
我们常常需要在不同的数据类型进行转换。常见的转换主要是以整数为中心,我们来看看整数和其他三种类型的转换。先看看如何从浮点数转换为整数。一般有两种基本转换:一种称之为取整,即只保留小数的整数位,不自动四舍五入,此时可以使用int函数进行。num = 1.65print(int(num))输出为:1。当然,取整也有不同的形式,比如也可以向上取整,1.65取整为2。这时就需要利用ceil函数,ceil是天花板的意思,很形象,即大于该浮点数的最小整数。import mathnum = 1原创 2022-02-14 13:35:26 · 860 阅读 · 2 评论 -
2.5 不同数据类型的转换之二
继续介绍不同数据类型的转换。下面来看看字符串和整数的相互转换。首先我们先来看看整数与单一字符的转换。我们从一个问题开始,首先要明确一点,两者并不能混用。更为常见出错的时候发生在输入数据的处理上。num = input()print(num + 1)运行界面为:此时不论输入什么数值,都会产生一样的错误,意思是说只能将字符串和字符串连接(即相加)。正确的处理可以使用int函数:num = input()num = int(num)print(num + 1).原创 2022-02-14 14:01:57 · 1018 阅读 · 0 评论 -
2.6 公式计算
1)让用户输入任意两个整数相乘的内容(如“2*3”) 能输出“2*3=6”,比如运行情况为:让我们一步一步完成。先完成输入:strs = input()假设我们输入的是“2*3”,那么现在首先就需要将星号前后的两个数值拆分出来。这个可以利用字符串自带的split函数来实现:strs = input()print(strs.split('*'))运行结果为:看得出,split方法会以圆括号中指定的字符来分割当前字符串,并得到前后两个字符串,分别是‘2’和‘3’。两..原创 2022-02-14 19:35:03 · 1055 阅读 · 0 评论 -
2.7 关于数值的格式输出
主要介绍下各种数据类型中的常见格式输出。1)我们先看看整数中的问题,那就是不同进制的格式化显示。比如对于十进制整数,能否以其他进制来显示?我们先看利用print函数的格式化功能:num = 100print('%x' % num)输出为: 64。这里的%字符表示标记转换说明符,%x表示以16进制显示数值,这是老版本Python的写法。我们可以使用功能更为强大的一个新的写法。num = 100print(format(num, 'b'))print(format(num,原创 2022-02-14 20:29:36 · 1602 阅读 · 0 评论 -
3.1 简单条件判断
这里来介绍一种重要的程序控制语句:条件判断语句。到目前为止,我们所学习的Python都是采取一条语句接着一条语句的方式来组织,代码的执行也是按照书写的次序依次进行,这种代码语句的组织方法可以称为顺序语句。而所谓控制语句,是指一些改变传统顺序执行方式的代码组织方法,比如有时我们希望有些语句不一定会被执行,甚至允许在条件允许时被多次执行。具体包括条件判断语句和循环语句,实践和理论已经证明,借助于顺序语句、条件判断语句和循环语句,我们可以表达出任何可以表达的运算逻辑和应用功能。代码就是按照语句的先原创 2022-02-15 19:53:41 · 701 阅读 · 1 评论 -
3.2 多重条件判断
我们来介绍继续介绍复杂些的条件判断语句。我们朝着预定的目标再次前进。这次准备再次区分优秀,所谓优秀,就是指大于等于90分。先试着按照最直观的汉字方式写出来:对应的Python代码是:grade = int(input())if grade >= 90: print('优秀')if grade >= 60 and grade < 90: print('及格')if grade < 60: print('不及格')这个应该不难理解。其原创 2022-02-16 10:56:35 · 1442 阅读 · 0 评论 -
3.3 固定次数的循环之一
除了顺序语句、条件判断语句外,还有最后一种控制语句,即循环语句。我们先看看看最为简单一种:固定次数的循环。循环更是一种强大的控制语句,它可以让我们反复执行某段代码,并在一定条件下结束。比如在数据分析中,我们需要对所有记录进行相同的数值处理,那么此时就是一种循环,通过循环遍历每个记录,分别进行处理,处理完全部记录后即可结束。还是从一个例子开始。假设要完成5个整数数据的输入再相加应该怎么写呢?有了前面的变量定义基础,最为直观的方法就是不停的重复粘贴刚才的代码,对于初学者这倒是一个很好的机会,好好熟.原创 2022-02-16 11:13:03 · 1375 阅读 · 0 评论 -
3.4 固定次数的循环之二
我们继续来学习固定次数的循环语句。上次我们谈到了利用循环简化输入的方法。接下来,如何简化输出呢?一眼看去,好像很难把它写成类似输入那种灵活的样子。究其原因在于input每次执行都只输入一个数据,而这里却一起输出一个汇总的数据。所以如果也想使用循环来写的话,首先要把这个语句拆分开来:此时,输出只输出一次,但是这个输出数值却已经计算好了。又到了定义变量的时候了,我们定义了一个sum保存了这个总和。之所以拆分成这个样子,还是为了循环的表达。我们重点来看这个sum求和。我们可以想象,加法原创 2022-02-16 13:51:04 · 1351 阅读 · 0 评论 -
3.5 不固定次数的循环
本次主要介绍不固定次数的循环。for语句虽然有用,但是它通常用于表达具有固定次数的循环结构。如果我们遇到不能固定次数的循环,此时是否继续循环常常依赖一种条件,当条件一旦不满足,循环就可能随时终止,那该如何处理呢?我们继续上次的练习,改变条件,允许用户不断输入各种整数数据,直到用户输入0为止,并最终输出所有数的总和。我们再次看看上次的代码,可以发现已有的代码是循环5次:sum = 0for i in range(5): sum = sum + int(input())prin原创 2022-02-16 20:17:53 · 1861 阅读 · 0 评论 -
3.6 猜数字游戏
这个练习是个小游戏,很经典,通常非常适合计算机语言学习中的控制语句入门。游戏规则为:首先系统自动产生一个1到100之间的随机整数,允许用户通过输入多次猜测,并每次都进行大小提醒,直至猜中为止。编程其实就是要告诉计算机该怎么处理这个逻辑,因此首先需要自己对这个游戏的流程处理做出一个清晰的描述,我们不妨以伪代码的方式来给出一个步骤:设置一个随机数输入猜数如果猜数大了,输出大了如果猜数小了,输出小了如果猜数相等,输出成功,并退出...显然如果用户没有猜中,还需要继续输入猜数,因此可能原创 2022-02-17 15:24:47 · 4811 阅读 · 0 评论 -
3.7 星号菱形
这主要练习for循环语句,练习目标是输出指定行数的星号菱形,如:为了能介绍清楚,我们可以从最简单的开始。比如先简化思路,输出三角形:甚至可以再简单些,以输出星号矩形:最后最简单的方式就是先输出一行星号:这个一行星号虽然简单,但是仅仅凭借目前学习的内容还真不能完成,如:cols = 5for i in range(cols): print('*')输出为:正常的print函数会在输出完内容后自动换行。因此,可以通过在print函数中设置end参原创 2022-02-18 11:08:20 · 1248 阅读 · 0 评论 -
4.1 函数的定义和调用
我们回忆一下,在前面章节里,我们使用最多的有两个函数,一个是print,一个是input,两者分别解决了我们最为常见的输出和输入功能。但是我们知道这些函数是怎么实现的吗?我们其实也不必知道,只需使用它们就行了。而且对它们的使用也比较灵活,给它们不同的参数,它就会做不同的事情,比如:print('Hello!')print('Bye!')输出为:Hello!Bye!你传递给print不同的字符串,它就会输出不同的字符串,这个跟在函数名称后圆括号中的数据被称为参数,所以函数通过参数实现定制化原创 2022-02-18 15:40:14 · 442 阅读 · 0 评论 -
4.2 函数参数的灵活使用
1)先来看看默认值参数。函数参数虽然提供了可以改变函数功能与行为的可能性,但是它也给调用函数的代码提出了基本要求,那就是,对于有参数的函数而言,必须在调用时指定参数。比如上述的max函数,如果直接调用,系统会提示“TypeError: max() missing 2 required positional arguments: 'num1' and 'num2'”,含义就是说遗漏了两个必需的参数。显然,这样有时也并不方便,比如我们通过参数来设置按国家,对于国内用户而言,默认都是中国,但是仍然原创 2022-02-18 15:54:50 · 1208 阅读 · 0 评论 -
4.3 变量的作用域
作用域代表着一个影响范围,作用域可以理解为变量的有效范围有了函数的定义,代码结构会逐渐变得复杂起来,此时经常遇到的一个问题就是变量名称的冲突问题。我们不妨从一个例子开始:def func(num): num = 2 print(num)num = 1func(num)print(num)输出为:21大家能看出输出结果为什么是这个吗?这里面虽然出现了很多个num变量(这里是为了练习,其实这种写法并不可取),但是它们并非是一个变量。我们按照代码的执行次序来原创 2022-02-19 09:39:27 · 374 阅读 · 0 评论 -
4.4 特殊的函数定义和使用
1)先来看看匿名函数。函数的使用虽然方便,但是往往需要大量的格式定义,即使是很简单的功能,也往往需要很多语句,而且还需要我们给它起个名称。有时在函数定义非常多的场合,这是个很大的负担。所以,匿名函数应运而生。我们看个例子。比如我们还是获取两个数值中的最大值,这是我们在前面章节定义的函数:def max(num1, num2): if num1 > num2: return num1 else: return num2print(ma原创 2022-02-19 10:05:26 · 672 阅读 · 0 评论 -
4.5 模块和包
函数虽然提供了一种复用代码的能力,但是前面所介绍的各种函数使用方法都只能在一个代码文件中进行,如何实现更为灵活的复用效果呢?比如就像print和input函数那样,无需在当前代码中书写函数的定义即可使用。这就需要使用模块和包进行封装。我们先看看模块。所谓模块,其实就是把函数单独放在一个独立的py文件中。我们现在一直编写代码的所在就是一个称为“Exec.py”的文件。我们不妨在PyCharm中再新建一个Python文件,将新文件名称设置为“myFuncs.py”。此时,当前项目共有两个P.原创 2022-02-19 10:44:36 · 693 阅读 · 0 评论 -
4.6 素数函数
这里介绍一个素数函数的练习。首先需要解决如何判断素数。素数也称质数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。那么具体的判断思路是什么?这是编程写代码的基础。比如对于7这个数,我们可以使用2到7之前的所有整数(即2到6),分别去除这个7,比如先使用2:如果不能整除,就继续下一个3:还不能,就继续,直到6为止:如果在全部的除法运算中,没有发生一次整除,就表明这个7就是素数。反之,有些数,可能就会发生被整数的情况,如8在除以2时发生整除,就表明8不是素.原创 2022-02-19 15:30:56 · 2560 阅读 · 0 评论 -
5.1 随机数
随机数在各种应用编写中很常见,这里主要介绍Python自带的random模块中常见随机函数的使用方法。下面的练习以掷骰子为例,随机生成1到6中任意一个整数,以此介绍各种常见产生随机数的函数使用方法。1)方法1:import randomnum = random.randint(1, 6)print(num)输出为1到6(包括1和6)的一个随机整数。randint返回两个参数之间的一个随机整数, 该数值包括参数指定的下限和上限。2)方法2:import randomnu原创 2022-02-22 17:42:30 · 1726 阅读 · 0 评论 -
5.2 时间处理
时间处理非常常见,时间在各种数据分析中也是一种重要的分析依据。下面围绕着几个常见问题来介绍:1)获取当前时间所谓当前时间,其实是指你运行代码的电脑上的时间。计算机系统每时每刻都在计时,可以通过专门的函数来获取这些当前时间信息。方法1:使用datetime模块中的datetime类型from datetime import datetimeprint(datetime.now())输出为:2022-02-22 17:49:26.474330前面的内容很好理解,分别是年月日原创 2022-02-22 19:12:55 · 647 阅读 · 0 评论 -
5.3 窗体绘图
这里主要介绍利用turtle模块来进行窗体绘图,它提供一种非常类似于现实手工绘图的图形绘制方式。说到turtle为什么叫turtle,源于早期的一个面向儿童的计算机绘图语言就是turtle,因此Python这个模块在很大方面学习和参考了以前的绘制模式。...原创 2022-02-25 19:29:57 · 593 阅读 · 0 评论 -
5.4 文本处理
这里主要介绍常见分词和词云的制作方法。无论是英文文本还是中文文本,都可以把它们看成是由很多词语组成的句子。通常处理文本的第一步就是需要进行分词,也就是从句子中拆分出各个词语。对于英文文本,不同的词语一般空格分隔,因此分词比较简单:strs = 'to be or not to be'print(strs.split())输出为:['to', 'be', 'or', 'not', 'to', 'be']而对于中文文本,不同的词语之间没有天然的分隔符:因此需要一些第三方的模块来原创 2022-02-25 21:12:31 · 1611 阅读 · 0 评论 -
5.5 时钟屏保
这是一个综合时间获取和窗体绘图的练习,可以在屏幕上显示当前时间,并且其位置可以随机移动,实现时钟屏保的效果。先从最简单的开始,即在屏幕上先输出一个当前时间:import turtle as timport timet.setup(1000, 600)now = time.ctime()t.write(now, font=("Times", 36, "bold"))t.done()输出为:其中获取当前时间是通过time模块的ctime方法来实现,并通过write方法结.原创 2022-02-26 21:22:30 · 736 阅读 · 0 评论 -
6.1 列表、元组
Python对于数据处理,专门提供了一些组合数据类型,他们是指同时可以存储多个数据的一种集合型数据。比如列表可以存放若干个整数,在访问时,可以通过序号下标来读取不同的元素。num = [1, 2, 3, 4, 5]for i in range(len(num)): print(num[i])除此以外,Python还提供了其他几种:这次重点介绍下列表(List)。1)列表的创建下面演示了一些常见的创建方法:num = [0] * 10num = [8,原创 2022-02-27 09:43:51 · 414 阅读 · 0 评论 -
6.2 字典、集合
字典(dictionary)名称虽然奇怪,其实该种组合类型提供了一种通过名称(键)来访问元素(值)的方法。前面已经介绍过列表和元组,他们只能通过序号来访问每个元素。但是在一些应用场景下,序号方式并不方便。做个比喻,就像点名,可以使用一号二号来进行,但是有时更需要直接根据姓名点名,更有针对性,也易于记忆。因此,字典的应用很广,非常实用。1)字典的创建data = {'ID': '000001', 'name': '黎明', 'age': 16, '原创 2022-02-27 11:02:26 · 744 阅读 · 0 评论 -
6.3 高级操作
这里主要介绍几个常见组合数据的练习:1)查找元素,可以查找一个数值在列表中是否出现,如果出现,输出为:True。num = [1, 2, 3, 4, 5]for i in num: if i == 2: print(True)输出为:True代码思路很简单,循环遍历每个列表元素,并不断判断是否等于需要查找的数,一旦有即输出结果。这里有无无需获取查找元素所在的位置,因此可以不使用序号采取直接获取每个元素的循环遍历方法。如果需要返回位置,就应该使用带有序号的遍历原创 2022-02-27 20:37:36 · 567 阅读 · 0 评论 -
6.4 词语统计
主要练习字典的使用方法,包括字符串的常见操作方法。比如对于下面的字符串文本,实现文本中词语个数的统计。如:方法1:遍历文本中的字符串,依次将每个词语添加到现有字典结构中。对于新的词语,新增节点并置个数为1。对于已有的词语,则只增加个数。为此,首先需要分割出各个词语,常见的方法可以使用字符串自带的split方法:text = 'to be or not to be'words = text.lower().split()print(words)输出为:['to', 'be',原创 2022-02-28 08:56:14 · 692 阅读 · 0 评论 -
7.1 文件操作
所谓文件是指存储在硬盘上的各种文件,Python所读取的数据文件通常为文本格式,即可以使用文本编辑器来打开阅读。对于数据分析任务而言,数据文件是最为常见的数据获取途径。在讲解数据文件处理之前,先需要对数据文件做下说明。由于数据文件通常都很大,因此不建议大家直接使用Windows系统自带的记事本来打开,而可以尝试使用Sublime或者Editplus等专业文本编辑器。尤其是后者是免费软件,可以直接下载:Sublime Text - Text Editing, Done RightSublime T原创 2022-02-28 14:57:14 · 467 阅读 · 0 评论 -
7.2 文件夹操作
文件夹也叫文件目录,可以存放、组织多个文件。os模块提供了一组常见函数,可以方便进行文件夹管理。比如:mkdir 创建文件夹 chdir 改变当前文件夹 rmdir 删除文件夹 listdir 罗列文件夹内容我们通过一个练习来了解下相关操作。自动生成姓名文件夹,即根据已有的学生学号,自动生成相应的各个文件夹,每个文件夹对应一个学号。首先先来根据姓名列表建立文件夹:import osstus = ['202010001', '202010002', '...原创 2022-02-28 15:33:14 · 346 阅读 · 0 评论 -
7.3 投票文件数据统计
这是一个经典练习,主要涉及对字典和文件处理的综合技能。主要目的是实现投票文件数据统计,比如有数据文件 count.txt,内容为每个候选人及其选票,可能一个候选人会出现多次:张三 6李四 8王二 3张三 5王二 4张三 3要求读取文件,并统计汇总结果为: {'张三': 14, '李四': 8, '王二': 7}1)建立数据文件可以在PyCharm中直接建立数据文件,右击当前项目,选择New——File,如:然后即可输入新的文件...原创 2022-02-28 16:02:31 · 1507 阅读 · 3 评论