前言:
零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!
欢迎大家订阅专栏:零基础学Python:Python从0到100最新最全教程!
程序是指令的集合,写程序就是用指令控制计算机做我们想让它做的事情。那么,为什么要用Python语言来写程序呢?因为Python语言简单优雅,相比C、C++、Java这样的编程语言,Python对初学者更加友好。
一、一些计算机常识
在开始系统的学习编程之前,我们先来科普一些计算机的基础知识。计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们常说的中央处理器,它的功能是执行各种运算和控制指令。刚才我们提到过程序是指令的集合,写程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。目前,我们使用的计算机基本都是“冯·诺依曼体系结构”的计算机,这种计算机有两个关键点:一是要将存储设备与中央处理器分开;二是将数据以二进制方式编码。
二进制是一种“逢二进一”的计数法,跟我们人类使用的“逢十进一”的计数法本质是一样的。人类因为有十根手指所以使用了十进制,因为在计数时十根手指用完之后就只能用进位的方式来表示更大的数值。当然凡事都有例外,玛雅人可能是因为长年光着脚的原因,把脚趾头也都用上了,于是他们使用了二十进制的计数法。在这种计数法的指导下,玛雅人的历法就与我们平常使用的历法并不相同。按照玛雅人的历法,2012年是上一个所谓的“太阳纪”的最后一年,而2013年则是新的“太阳纪”的开始,后来这件事情被以讹传讹的方式误传为”2012年是玛雅人预言的世界末日“的荒诞说法。今天很多人都在猜测,玛雅文明之所以发展缓慢跟使用了二十进制是有关系的。对于计算机来说,二进制在物理器件上最容易实现的,因为可以用高电压表示1,用低电压表示0。不是所有写程序的人都需要知道十进制与二进制如何转换,大多数时候我们即便不了解这些知识也能写出程序,但是我们必须要知道计算机是使用二进制计数的,不管什么数据到了计算机内存中都是以二进制形式存在的。
二、变量和类型
要想在计算机内存中保存数据,首先就得说一说变量这个概念。在编程语言中,变量是数据的载体,简单的说就是一块用来保存数据的内存空间,变量的值可以被读取和修改,这是所有计算和控制的基础。计算机能处理的数据有很多种类型,最常见的就是数值,除了数值之外还有文本、图形、音频、视频等各种各样的数据。虽然数据在计算机中都是以二进制形态存在的,但是我们可以用不同类型的变量来表示数据类型的差异。Python中的数据类型很多,而且也允许我们自定义新的数据类型(这一点在后面会讲到),这里我们需要先了解几种常用的数据类型。
- 整型(
int
):Python中可以处理任意大小的整数,而且支持二进制(如0b100
,换算成十进制是4)、八进制(如0o100
,换算成十进制是64)、十进制(100
)和十六进制(0x100
,换算成十进制是256)的表示法。 - 浮点型(
float
):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456
)之外还支持科学计数法(如1.23456e2
)。 - 字符串型(
str
):字符串是以单引号或双引号括起来的任意文本,比如'hello'
和"hello"
。 - 布尔型(
bool
):布尔值只有True
、False
两种值,要么是True
,要么是False
。
a = 5# a是整数类型b = 'Hello'# b是字符串类型c = 3.14 # c是浮点数类型d = True # d是布尔类型print(a, b, c, d)
三、变量命名
对于每个变量我们需要给它取一个名字,就如同我们每个人都有自己的名字一样。在Python中,变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则。
- 硬性规则:
- 规则1:变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是像
!
、@
、#
这些特殊字符是不能出现在变量名中的,而且我们强烈建议大家尽可能使用英文字母。 - 规则2:大小写敏感,简单的说就是大写的
A
和小写的a
是两个不同的变量。 - 规则3:变量名不要跟Python语言的关键字(有特殊含义的单词,后面会讲到)和保留字(如已有的函数、模块等的名字)发生重名的冲突。
- 规则1:变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是像
- 非硬性规则:
- 规则1:变量名通常使用小写英文字母,多个单词用下划线进行连接。
- 规则2:受保护的变量用单个下划线开头。
- 规则3:私有的变量用两个下划线开头。
规则2和规则3大家暂时不用理解,后面自然会明白的。当然,作为一个专业的程序员,给变量(事实上应该是所有的标识符)命名时做到见名知意也非常重要。
四、变量的使用
下面通过例子来说明变量的类型和变量的使用。
a = 45# 变量a保存了45b = 12# 变量b保存了12print(a + b)# 57print(a - b)# 33print(a * b)# 540print(a / b)# 3.75
在Python中可以使用type
函数对变量的类型进行检查。程序设计中函数的概念跟数学上函数的概念基本一致,数学上的函数相信大家并不陌生,它包括了函数名、自变量和因变量。如果暂时不理解函数这个概念也不要紧,我们会在后续的内容中专门讲解函数的定义和使用。
a = 100b = 12.345c = 'hello, world'd = Trueprint(type(a))# print(type(b))# print(type(c))# print(type(d))#
不同类型的变量可以相互转换,这一点可以通过Python的内置函数来实现。
int()
:将一个数值或字符串转换成整数,可以指定进制。float()
:将一个字符串转换成浮点数。str()
:将指定的对象转换成字符串形式,可以指定编码。chr()
:将整数转换成该编码对应的字符串(一个字符)。ord()
:将字符串(一个字符)转换成对应的编码(整数)。
转换
a = 100b = 12.345c = 'hello, world'd = True# 整数转成浮点数print(float(a))# 100.0# 浮点型转成字符串 (输出字符串时不会看到引号哟)print(str(b))# 12.345# 字符串转成布尔型 (有内容的字符串都会变成True)print(bool(c)) # True# 布尔型转成整数 (True会转成1,False会转成0)print(int(d))# 1# 将整数变成对应的字符 (97刚好对应字符表中的字母a)print(chr(97)) # a# 将字符转成整数 (Python中字符和字符串表示法相同)print(ord('a'))# 97
变量的作用域
在Python中,变量的作用域是指变量可以被访问的范围。Python中不同的作用域:
全局作用域(global scope):定义在模块层次的变量或函数,可以在模块中的任何地方被访问。
局部作用域(local scope):定义在函数或类方法中的变量,只能在函数或类方法中被访问。
在Python中,变量的作用域是由它所在的代码块(block)决定的。每个代码块都有它自己的作用域,当Python解释器在执行代码块时,会创建一个新的作用域,当代码块执行完毕时,这个作用域就被销毁了。
特殊的变量
Python 中有一些特殊的变量,它们有着特定的作用,包括:
name:这是一个特殊的变量,它会在每个Python文件中自动创建。当文件被直接运行时,__name__的值为”main“,当文件被作为模块导入时,__name__的值为文件名。
doc:这个变量用于存储文档字符串,它可以通过在函数、类或模块的第一行编写一个字符串来定义。文档字符串可以通过在Python中使用help()函数来访问。
file:这个变量包含当前模块的文件名(包括路径),如果模块是在内存中创建的,则该变量的值为None。
builtins:这个变量包含Python内置的函数和变量的名称空间。可以通过访问该变量来获得Python内置函数的列表。
package:这个变量包含当前模块的包名,如果模块不在包中,则该变量的值为None。
删除变量
在Python中删除变量可以使用del
关键字。del
可以删除单个变量、删除多个变量。
x = 5print(x)del xprint(x)
以上案例中,我们先定义了变量x,并打印x,然后将变量x删除,删除后则无法访问。
使用del删除的变量或元素会被彻底删除,无法再次访问或使用。如果尝试访问已删除的变量或元素,Python会抛出NameError或KeyError异常。因此,在删除变量或元素之前,请确保它们不再需要使用。
在Python程序中,我们可以使用变量来保存数据,变量有不同的类型,变量可以做运算(下一课会有详细的讲解),也可以通过内置函数来转换变量类型。
总之,Python变量是一个基本的概念,用于存储数据。Python变量的命名需要遵循一定的规则,可以使用赋值语句创建变量,支持多个变量指向同一个对象,支持变量类型的动态转换。在删除变量或元素之前,请确保它们不再需要使用。
文末免费送书:Python算法从菜鸟到达人
本书以 Python 语言为平台,分四个部分介绍了算法的基本概念、五种经典的算法思想、重要的数据结构以及实践中常用的几种算法技术。除第 1 章和第 2 章外,书中每章内容都包括了基本概念、实现方式、具体应用以及达人修炼真题。每一种算法思想中的达人修炼真题都提供了相应的源代码,可供读者运行,从而达到理论与实践并重的目的。
本书从算法基本分析到算法基本思想,再到具体应用及大量真题,内容全面,条理清楚,语言通俗。本书对计算机及相关专业本科生及研究生的面试、笔试将有所帮助;此外,计算机科学相关领域的工程师以及爱好者也可以将本书作为技术参考书籍,在需要时可查找所需算法的相关内容并从中得到启示;当然,对计算机科学感兴趣的高中生以及 IT 领域项目经理也可以阅读本书,从而开启算法世界的大门。
抽奖方式
抽奖方式: 评论区随机抽取6位小伙伴免费送出!
参与方式: 关注博主、点赞、收藏、评论区评论“人生苦短,我用Python!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!)
活动截止时间: 2024-3-18 20:00:00
京东: 购买链接传送门
名单公布方式: 下期活动开始将在评论区和私信一并公布,中奖者请三天内提供信息
随着大数据处理、人工智能等领域的飞速发展和计算机性能的飞跃性提升,无论在学术 界还是产业界,计算机领域的前沿概念与技术都逐步深入到思维层面,数学在这其中发挥的 作用越来越重要,越来越多的高深数学理论被运用到实际中来,有效地解决了许多实际问题, 例如分析几何、小波分析、数值计算等。这一切让人们逐步意识到计算机程序设计依赖的就 是数学知识和算法思想。在软件工程师动手编程完成某一任务之前,先要通过一系列的分析 过程来确定解决该任务的方法。首先,分析待求解任务/问题,将其抽象为某种数学模型;然 后确定求解该问题时的资源限制(包括时间资源、电力资源、存储资源、计算资源、容错成 本等);最后在已知信息的基础上,选择已有的算法或提出新的算法,在满足资源限制的情况 下解决问题。因此,可以说一个不懂算法的“菜鸟”程序员是无法独立、自主地解决具体工 程问题的,也很难写出逻辑严密、简化的高质量代码。
一名优秀的计算机科学领域的工程师或科学家一定对经典算法思想有深入的理解并能够 将这些算法灵活应用于解决实际问题的过程中。目前,很多顶尖 IT 公司都会考查应聘者的算 法功底和逻辑思维能力,因为算法功底深厚的应聘者,往往可以使项目的设计模式格外优化, 程序逻辑也更为严密清晰。IT 公司的顶尖专家和“达人”都对算法有很深的造诣,同时,项 目经理也必须具备超强的逻辑思维能力。
对于所有即将迈入职场的计算机科学相关领域的学生而言,应该都希望自己以后能够在 职场中逐渐成长为所在细分领域的优秀人才,具备出色完成各类任务、解决各类问题的能力, 算法可以说是解决这些问题的关键,而程序语言只是一个外壳。算法的功底与一个计算机科 学工程师的水平上限关系密切。所以,如果你想从事计算机科学相关工作,那么就应当认真 地培养自己的逻辑思维,从而提高算法功底!
本书的所有作者以及团队均在计算机科学领域有着多年的算法学习经历和IT领域工作经 验,对算法有着较为深入的开发与实践。本书是在所有作者(包括未出现在作者名单中的幕 后奉献者)钻研算法的基础上,经过长期的应用总结而完成的,并用言简意赅的语言将这些 算法问题的答案展现出来。
本书特色
当前,已出版的算法书籍不计其数,从经典的《算法导论》到针对具体的细分领域(例 Python 算法从菜鸟到达人 IV 如文本处理、神经网络等)相关算法的书籍,每一本都有自己的侧重点与特色。本书的特色 主要体现在以下几方面:
1)强调算法基础,理论与应用并重。
2)包含大量实际应用中的算法真题。
3)本书以 Python 语言实现。虽然 Python 中没有指针的概念(只有引用),为了便于理解, 书中很多地方还是使用了指针,可以认为其等价于引用。
4)本书配有核心知识点讲解视频(视频制作由刘玖樽和田思怡完成),讲解内容和程序 代码经多次校审和验证(由李海洋、刘玖樽、熊良成和田思怡完成)。
读者对象
1)计算机领域程序员及工程师。
2)计算机科学相关领域本科生及研究生。
3)其他算法爱好者(对算法感兴趣的高中生、IT 领域产品经理等)。
我们的目标是将本书打造成广大IT从业者和程序开发人员学习和提升算法能力的高效学 习材料,同时也可以作为科研院所及企业的工程师参考的一本技术性书籍,不论你是“菜鸟” 还是“达人”,阅读本书都将受益匪浅,可以有效提升解决实际编程问题的能力。
本书内容
本书共 16 章,分为以下四大部分。
第一部分(算法基础,第 1、2 章) 这一部分将引导读者理清算法在计算机系统中的作用以及伪代码写法的约定等,不仅给 出了算法的定义,简单地介绍了算法的表达方式,同时引导读者思考算法的设计和分析问题, 本书后面的内容都是建立在这些基础之上的。
第二部分(经典算法思想,第 3~7 章) 算法设计有很多思想,但是归纳起来,算法设计中有五种思想使用最为广泛,它们分别 是递归与分治法、动态规划算法、贪心算法、回溯法与分支界限法。这一部分逐一介绍了这 些经典算法思想的具体思路以及利用这些算法思想可以解决的具体问题。
第三部分(重要数据结构,第 8~13 章) 谈到算法的时候,数据结构这个词大概率也不会缺席。数据结构也是所有计算机专业学 生必修的一门课程。这一部分主要讲解了一些重要数据结构的相关知识以及应用范围。对于 数据结构基础较好的读者,可以跳过本部分,并不会影响阅读本书其余章节。
第四部分(常用算法,第 14~16 章) 这一部分重点介绍了日常学习或工作中最常用的一些算法,包括常用的排序算法、查找 算法以及字符串匹配算法。这些算法并不复杂,但是都有着非常高的使用频率,掌握它们将 快速提升读者对算法的应用和实践能力。