导图社区 Python基础知识
本图总结了Python中最基础知识,包括print函数与变量、数据类型与转换、条件判断与条件嵌套、input函数、列表和字典、for循环和while循环等。
编辑于2021-09-05 02:00:10Python基础知识
print()函数与变量
“代码框”和“终端”
“代码框”,输入对计算机的指令 “终端”,显示代码运行结果的地方,也就是用户看到的屏幕
print()函数的用法
print()函数的主要功能:打印内容 在这里,打印的意思是:让计算机把你给它的指令结果,显示在屏幕的终端上
不带引号
print(520)
(0)我们向计算机发出指令:“打印'520'”; (1)Python把这行代码编译成计算机能听懂的机器语言; (2)计算机做出相应得执行; (3)最后把打印结果呈现在我们面前
在括号内没有引号的情况下,我们应该往括号内放入计算机能够“理解”的内容,如:数字或运算
print(1+1),打印的结果是 2
因为计算机梦直接读懂数学运算,所以,它会直接打印出最终的运算结果“2”
单引号用法(英语单引号)
print('千寻')
这是因为,计算机的脑回路比较特别:只能理解数字,却读不懂文字。因为数字和数学运算是标准化、有固定格式的,而文字却能够千变万化。 当括号内有引号的时候,就相当于告诉计算机--你不需要执行多余的操作,我输入什么,你就打印什么
双引号用法(英语双引号)
单、双引号的混搭 例 print("let's play")
没有被打印出来的引号就属于print(函数结构)
『#』常用作单行注释符号,用于解释单行代码,#号后边的任何数据在代码运行的阶段不会被输出
三引号用法(英语三个单引号)
在print内部使用三引号'"来实现跨行输出
bug
在Python中,默认所有正确的语法,包括标点符号都是〖英文〗。不小心用了中文标点,计算机会无法识别,然后报错。 符号报错提示〖syntaxError:invalid syntax〗(语法错误:无效语法)
转义字符
转义字符的特征:反斜杠+想要实现的转义功能首字母
例:\n代表〖+newline〗换行;\b代表〖+backspace〗退格;\r代表〖+return〗回车
转义字符:\+需要转义的功能的英文缩写字母
功能:打印 print(''):让计算机无需理解,原样复述引号的内容 print():让计算机读懂括号里的内容,打印最终的结果
变量和赋值
作用:将繁杂的信息给--“收纳”好 例 name='千寻' name就是一个变量 这行代码的意思是:把“千寻”这两个字〖赋值〗给了“name”这个〖变量〗。 变量的特点:变量保存的数据是可以随意变化的。将变量当做盒子,变量的盒子仅能放一个,需要放进新东西时,只能寻找新盒子。
变量的命名规范
1、只能是一个 2、职能包含字母、数字和下划线 3、不能以数字开头 4、尽量描述包含的数据内容 5、不要使用Python函数名或关键字 例 信息是姓名,那么变量可以命名为name; 信息是数字,那么变量可以命名为number。 注意:在代码世界里,赋值号=不是左边等于右边的意思。仅仅表示赋值动作:把右边的内容放到了左边的盒子中 代表左右两边相等的符号,是比较运算符==
变量命名要规范 赋值用『=』表示 变量的最终值等于最后赋值的值
数据类型与转换
python世界可以看作部分现实世界的【镜像】,部分现实世界的东西、概念都可在python世界里找到对应,比如:现实世界中最常见的数字,文字,符号在Python世界就是:【数据】
数据类型
字符串(str)
字符串英文string,简写str。字符串,顾名思义,就是由一个个字符串起来的组合,字符可以是一个数字、一个字母、一个文字,甚至是一个符号。字符串可以表达现实世界里的词、语句、表达式等 字符串的识别方式非常简单——有层名为【引号】的皮,只要是被【单/双/三引号】这层皮括起来的内容,不论那个内容是中文、英文、数字甚至火星文。只要是被括起来的,就表示是字符串类型。 1 name='千寻' 2 3 print("Let's play") 4 5 在这组代码里,【'千寻'】、【"Let's play"】都属于字符串类型。 注意:字符串类型必须有【引号】的辅助。不然字符串就只能被报错
整数(int)
整数英文为integer,简写做int。Python世界的整数其实和现实世界数学中定义的一样:是正整数、负整数和零的统称,是没有小数点的数字。 比如在下面的代码框中,赋值语句中的数字都是整数: 1 a = 10 2 b = -60 3 c = 6841 4 d = 0 我们已经知道了字符串有【引号】的保护,可以和符号及其他文字类数据,譬如中文、英文随意组合。 而整数脱掉了【引号】马甲,只能『单独行动』。一旦碰上符号及其他文字类数据,譬如中文、英文,立马被报错。
浮点数(float)
浮点数的英文名是float,与整数(int)和字符串(str)不同,浮点数没有简写 浮点数非常好识别,它比整数多了一个小数点『.』,比如下列代码中的数字都是浮点数。 1 1.0 2 3.14159 3 -0.33 print(0.55+0.3),但最后得出的数据0.8500000000000001 哎?为什么不是【0.85】,而尾巴多了一个【1】呢?这是因为,Python计算浮点数时,会先把0.55和0.3转化成二进制数【注:二进制数由0和1表示,逢二进一】,如下: 1# 进制转换 2 0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制) 3 0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制) 而在这个转化过程中存在误差,这样,就造成了我们与程序计算结果的差异。
数据的应用
四则运算
Python里的整数、浮点数和数学意义的整数、小数是一样的,它最重要的作用是与运算符号结合,进行数学计算。 运算口诀:从左到右顺着来,括号里的优先算,乘除排在加减前
字符串的拼接
字符串拼接的方法可简单了,就是利用字符串拼接符号【+】,将需要拼接的变量连在一起就行了 【要点提示:print()函数,拼接符号+,无需标点符号,输出结果需与要求一模一样】 方法:用“+”号将数据进行拼接 目的:数据整合
数据类型的查询——type()函数
type()函数查询数据类型
数据转换
str()将其他数据类型转换成字符串
str()函数能将数据转换成其字符串类型,不管这个数据是int类型还是float类型,只要放到括号里。这个数据就能摇身一变,成为字符串类型。 也可以用引号转换
int()将其他数据类型转换成整数
将数据转换为整数类型的方法也很简单,就是int()函数。其使用方法同str()一样,将你需要转换的内容放在括号里就行,像这样:int(转换的内容)。 不过对于int()函数的使用,大家要注意一点:只有符合整数规范的字符串类数据,才能被int()强制转换。 别看它虽然只有一句话,但它其实带有三层含义:首先,整数形式的字符串比如'6'和'1',可以被int()函数强制转换 其次,文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换。 最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换。 比方说下列代码,如果点击运行,程序会报错【ValueError:invalid literal for int() with base 10: '3.8'】(值异常:浮点类型字符串无法使用int()强制转换)。 虽然浮点形式的字符串,不能使用int()函数。但浮点数是可以被int()函数强制转换的。 上方的代码串,就是一条将浮点数3.8强制转换的语句。但是,为什么输出的结果是3呢? 你看,int()函数的本质是将数据转换为整数。所以对于浮点数,int()函数会做取整处理。但是,同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分。 注意:1、文字类和小数类字符串,无法转换成整数 2、浮点数转换成整数:抹零取整
float()将其他数据类型转换成浮点数
首先float()函数的使用,也是将需要转换的数据放在括号里,像这样:float(数据)。 其次,float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式
条件判断与条件嵌套
条件判断:计算机的沟通逻辑----条件判断,明确地让计算机知道,在什么条件下,该去做什么。 对于Python也是同样。Python之所以能完成自动化任务,比如自动抓取网页关键词,自动下载小电影等,就是因为它可以执行条件判断。
条件判断
单向判断:if【如果……就】
首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进。 对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】 并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。 此时,被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令。 这意味着:如果赋值满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。
下面,我们来小结一下单向判断:if的代码逻辑及语法格式:
赋值
赋值满足if条件
执行if内部命令
双向判断:if…else…【如果…不满足,就…】
在if...else条件语句中,if和else各自抱团,形成两个不同的代码块。表示的是条件和其他条件的互斥关系——如果不满足if条件,就执行else其他条件。
赋值
满足条件
执行if
不满足条件
执行else
总结:1、【if…else…】双向判断语句:如果不满足if条件,就执行else下的命令 2、if和else自身所代表的条件是相互排斥的
多向判断:if…elif…else…
在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else… 这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。 当判断的条件超过3个时,中间的多个条件都可以使用elif。 p
首先,第一行的赋值,会按照从上到下的顺序挨个试一遍,看自己满足哪个条件,满足了就不往下走,不满足就继续试,试到出结果为止。 其次,elif的运行本质上和else一样,已经带有其他条件的意思,所以elif后可以不接else。
总结:【if…elif…else…】多项判断语句是:如果不满足if条件,就判断是否满足elif条件,满足执行,不满足执行else下的命令。2、if、elif和else三者所代表的条件是互斥的。3、elif后可不接else。
if嵌套
if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。
if嵌套的执行顺序
赋值不满足if条件
不管,跳过if命令
缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令。
计算机执行的顺序就是:
(1)先给historyscore赋值;
(2)因为if和else是只能留一个的互斥关系,if和else下的代码块只会执行一个,所以计算机要判断赋值的内容满足【historyscore>=60】还是【historyscore<60】的条件——如果满足if的条件,就执行if缩进下的内容,如果不满足就执行else缩进下的内容;
(3)执行print('程序结束')。
如何写嵌套代码
1 historyscore=26 2 #赋值语句:为历史成绩赋值 3 4 if historyscore>=60: 5 #条件:当历史成绩大于等于60时 6 7 print('你已经及格') 8 #结果:输入及格的结果 9 10 if historyscore>=80: 11 #条件:当历史成绩大于等于60,且历史成绩大于等于80 12 13 print('你很优秀') 14 #结果:输出你很优秀的结果 15 16 else: 17 #条件:当历史成绩大于等于60,且小于80时 18 19 print('你只是一般般') 20 #结果:输出你只是一般般的结果 21 22 else: 23 #条件:当历史成绩小于60时 24 25 print('不及格') 26 #结果:输出不及格的结果 27 28 print('程序结束') 29 #打印最终结果
扒洋葱大法写if嵌套
第一步就要搞定最外层那张皮,将最基础的命令和条件写出来。
我们的思考逻辑应该是这样(1)把彼得·帕克26分的历史成绩赋给变量historyscore;(2)用if…else写最基础判断条件如果historyscore>=60时,打印你已经及格,否则,打印不及格;(3)用print()输出程序结束。
第二步,在“第一层皮”里装东西。也就是在条件【historyscore>=60】下,增加额外条件。 其中,额外条件1:当历史成绩大于80分,显示结果你很优秀;额外条件2:当历史成绩在60到80分之间,显示结果:你只是一般般。
tab和空格键不能混用,直接在条件语句后面回车就会自动缩进到下一行。可以用Ctrl+{ 来调整缩进 左括号是向左缩进4个空格,右括号是向右缩进4个空格。
input()函数
input()函数的使用
input()函数当作一扇链接现实世界与代码世界的门 当问题从代码世界传递给我们,可我们却没有回答时,这扇等待输入的input()大门,就会一直处于敞开状态,一直等着你往里送回答。 而当我们输入信息后,这扇input()大门便会关上,继续执行下面的命令。 input()函数是输入函数,当你在函数的括号内写出问题时,input()函数会将此问题原样显示在屏幕上,并在终端区域等待你针对此问题的回答。
input()函数思维的第一步,就是使用input()函数搜集信息:
1 input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字: ') 2 #运用input函数搜集信息
然而,当我想将搜集到的数据和【'学院欢迎你,小萌新!'】拼接起来,并打印出结果时,问题来了。虽然我用input()函数搜集到了一个信息,可我如何从程序海洋中调出这个信息,进行数据拼接呢? 这就涉及到了input()函数的第二个知识点——函数结果的赋值
input()函数结果的赋值
input()函数的数据类型
input()函数结果的强制转换
列表和字典
列表
什么是列表
list1=['小明',18,1.70] “list”:列表名 “=”:赋值 “[]”:用中括号 "'小明'“:元素 每个人元素用逗号分隔 列表很包容,各种类型的数据(整数/浮点数/字符串)无所不能包。
从列表提取单个元素
偏移量。列表中的各个元素,好比教室里的某排学生那样,是有序地排列的,也就是说,每个元素都有自己的位置编号(即偏移量)。 1.偏移量是从0开始的,而非我们习惯的从1开始; 2.列表名后加带偏移量的中括号,就能取到相应位置的元素。 例:list1=['小明',18,1.70]中,“小明”的偏移量:list1[0];“18”的偏移量:list1[1]。。。。
从列表提取多个元素
:左右两边的数字指的是列表中元素的偏移量,记住偏移量(索引)始终是从0开始的。 用冒号来截取列表元素的操作叫作切片,顾名思义,就是将列表的某个片段拿出来处理。这种切片的方式可以让我们从列表中取出多个元素。 前半句:冒号左边空,就要从偏移量为0的元素开始取;右边空,就要取到列表的最后一个元素。后半句:冒号左边数字对应的元素要拿,右边的不动(可再回顾下代码)。
左取:右不取 左空从0取:右空取到头
给列表增加/删除元素
语法是:del 列表名[元素的索引] 例: 从students中删除“小红” 1 students = ['小明','小红','小刚','小美'] 2 del students[1] 3 print(students)
字典
什么是字典
字典和列表有3个地方是一样的:1.有名称;2.要用=赋值;3.用逗号作为元素间的分隔符。 而不一样的有两处:1.列表外层用的是中括号[ ],字典的外层是大括号{ }; 2.列表中的元素是自成一体的,而字典的元素是由一个个键值对构成的,用英文冒号连接。如'小明':95,其中我们把'小明'叫键(key),95叫值(value)。 这里需要强调的是,字典中的键具备唯一性,而值可重复。
从字典中提取元素
和列表相似的是要用[ ],不过因为字典没有偏移量,所以在中括号中应该写键的名称,即字典名[字典的键]。
给字典增加/删除元素
删除字典里键值对的代码是del语句del 字典名[键],而新增键值对要用到赋值语句字典名[键] = 值。
列表和字典的异同
不同
列表中的元素是有自己明确的“位置”的,所以即使看似相同的元素,只要在列表所处的位置不同,它们就是两个不同的列表。而字典相比起来就显得随和很多,调动顺序也不影响。因为列表中的数据是有序排列的,而字典中的数据是随机排列的。
这也是为什么两者数据读取方法会不同的原因:列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值。
相同
在列表和字典中,如果要修改元素,都可用赋值语句来完成。
支持任意嵌套。除之前学过的数据类型外,列表可嵌套其他列表和字典,字典也可嵌套其他字典和列表。
for循环和while循环
可以让计算机重复或自动的执行代码
for...in...循环语句
1 for i in [1,2,3,4,5]: 2 print(i) 3 #有一群数字在排队办业务,也就是列表[1,2,3,4,5] 4 #它们中的每一个被叫到号的时候(for i in),就轮流进去一个空房间办业务 5 #每一个数字进去房间之后,都对计算机说:“喂,我要办这个业务:帮忙把我自己打印出来”,也就是print(i) 6 #然后计算机忠实的为每一个数字提供了打印服务,将1,2,3,4,5都打印在了屏幕上 7
for循环:空房间
空房间的学名叫【元素】(item),你可以把它当成是一个变量。那么首先,我们需要给房间取一个名字,也就是“变量名”。 为什么我总是用i?因为英文是item,所以i是常用名嘛。但其实你给这个房间取什么名字都行。 在for循环结束之后,我们还能使用这个房间,但打印出的是最后一个进入房间的元素
for循环:一群排队办业务的人
我们用print(i)把“空房间”i打印了出来,发现i会逐个接待字典中的每一个【键】。 字典、列表和字符串都是一群排队办业务的人,但a = 5并不是。 p 而整数、浮点数是不属于“一群排队办业务的人”的,如果把它们放在for循环里,代码会报错
range()函数
range 范围
使用range(x)函数,就可以生成一个从0到x-1的整数序列。
使用range(a,b) 函数,你可以生成了一个【取头不取尾】的整数序列
for循环:办事流程
“办事流程”的学名是【for子句】。格式是【冒号】后另起一行,【缩进】写命令。
while循环
while 在...期间;在...的过程中;与...同时
1 a = 0 #先定义变量a,并赋值 2 while a < 5: #设定一个放行条件:a要小于5,才能办事 3 a = a + 1 # 满足条件时,就办事:将a+1 4 print(a) # 继续办事:将a+1的结果打印出来
while循环:放行条件
while在英文中表示“当”,while后面跟的是一个条件。当条件被满足时,就会循环执行while内部的代码(while子句)。 所以while循环本质上像是一个哨卡:只要事情符合条件,那就一遍又一遍的“按流程办事”。 就像在上面的例题中,只要a<5这个条件成立,就不停地办事(把a+1的结果打印出来),直到条件不成立,办事流程就停止。
和for循环一样,冒号和内部代码的缩进都是必不可少的。╭(╯^╰)╮写不规范的话计算机又给你报错,然后你又卡在莫名其妙的地方很久噢......
1 man = '' # 注:''代表空字符串 2 while man != '有': #注:!=代表不等于 3 man = input('有没有愿意为小龙女死的男人?没有的话就不能出古墓。') 4 print('小龙女可以出古墓门下山啦~') 第1行代码:定义了变量man为空的字符串。使用变量前要先定义变量并为变量赋值,下面我们还会继续用到变量man。 第2行代码:while后面有一个条件,当这个条件被满足时,即man != '有'时,放行、办事。开始执行循环内部代码,即第3行的代码,开始询问。 第3行代码:询问现在有男人愿意为小龙女死吗?输入完信息后,回到第2行代码,重新判断条件真假。直到条件被判断为假,即man == '有',while循环才结束。 第4行代码:while 循环结束后的代码,也是循环外部的代码。因为当有男人愿意为小龙女死的时候,while 后面的条件就为假,此时,程序会结束循环,去运行第五行代码。 我们来运行一下好了,同样需要你输入内容。你可以先随便输入几个数据,只要你输入的不是有,代码就会一直循环;直到你输入有,循环会结束。
while循环:办事流程
有缩进的时候,print(a)也是循环中的“办事流程”,会将数字逐一打印。没有缩进的时候,循环中的“办事流程”就只有做加法,print(a)也就只会打印循环结束时的最后一个数字。 1 a = 0 2 while a < 5: 3 a = a + 1 4 print(a) 5 运行的结果为 5
布尔值和四种语句
用数据做判断:布尔值
计算机的逻辑判断,只有两种结果,就是True(英文意思是“真”)和False(英文意思是“假”),没有灰色地带。这个计算真假的过程,叫做【布尔运算】。 而True和False,也就叫做【布尔值】。
两个数值做比较
等于 == 不等于 != 大于 > 小于 < 大于等于 >= 小于等于 <=
直接用数值做运算
假 真 Fales True 0 任意整数(5)、任意浮点数(1.0) ' '(空字符串) '苏东坡'(字符串) [ ](空列表) [1,2,3] { }(空字典) {1:'李白',2:'白居易'} None
布尔值之间的运算
and、or、not、in、not in五种运算
表示翻转的意思。not True就等于False,not False就等于True
【in】的意思是“判断一个元素是否在一堆数据之中”,【not in】反之
四种新的语句
break语句
break的意思是“打破”,是用来结束循环的,一般写作if...break。它的写法长这样: 1 # break语句搭配for循环 2 for...in...: 3 ... 4 if ...: 5 break 6 7 # break语句搭配while循环 8 while...(条件): 9 ... 10 if ...: 11 break
break前面一共缩进了【8个空格】
这是因为if之下的语句要缩进4个空格(按一次Tab键),这里的if...break又嵌套在while或for循环中,而循环语句本身又要缩进4个空格。这样一来,break就缩进了【4+4=8】个空格(按两次Tab键)。【注】:Tab键和空格键不能同时混用。
continue语句
continue的意思是“继续”。这个子句也是在循环内部使用的。当某个条件被满足的时候,触发continue语句,将跳过之后的代码,直接回到循环的开始。 它的写法是这样的: 1 # continue语句搭配for循环 2 for...in...: 3 ... 4 if ...: 5 continue 6 ... 7 8 # continue语句搭配while循环 9 while...(条件): 10 ... 11 if ...: 12 continue 13 ...
ontinue的作用就是就是当某个条件为真时,又提前回到循环,而不会执行下面的代码
pass语句
pass语句就非常简单了,它的英文意思是“跳过”。这个代码的意思是:当a>=100的时候,跳过,什么都不做。其他情况,也就是a<100的时候,执行一个print语句。
else语句
else不但可以和if配合使用,它还能跟for循环和while循环配合使用。 当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。