【小白学python】入门级教程
一、Python基础入门
1. Python神器
2. print 输出
(1)输出文本内容
print("hello world") #必须加单引号或双引号
(2)输出变量内容
x=1
print(x)#不能加单引号或双引号
你也可以尝试加单引号或双引号是什么结果?
(3)分行显示
假设有两个变量
x=1
y=2
print(x)
print(y)
(4)同行显示
在print中增加end=' '
x=1
y=2
print(x,end=' ')
print(y,end=' ')
(5)文本加变量同时显示
想用文本提示输出结果的内容是什么,就可以采用这种形式:
x=1
y=2
print("x的值为:",x)
print("x+y的值为",x+y)
所以我们还可以把python当计算器使用;用python开发一些简单程序的时候,比如做一个抽奖小程度,就可以采用这种文本加变量的形式,文本可以提醒用户输入内容,变量由用户输入,然后对比提前界定好的中奖数字范围,判断用户是否中奖!
3. 添加注释
单行注释:以 # 开头
#print:打印的意思
print('hello world')#python不区分单引号与双引号
多行注释:可以用多个 # 号,还有 ''' 和 """:
比如,
前面的代码可以改为:
#print:打印的意思
#python不区分单引号与双引号
print('hello world')
还可以改为:
'''print:打印的意思
python不区分单引号与双引号'''
print('hello world')
或
"""print:打印的意思
python不区分单引号与双引号"""
print('hello world')
所以如果你只有一行代码可以用#,两行注释也可以用#,反正都是需要敲两次,但是如果有三四行甚至更多注释的时候就建议用单引号或双引号了!
4. Import导入
(1)将整个模块导入
Import 模块 [ as 别名]
例如:Pandas是数据分析三大剑客之一(pandas/matplotlib/numpy),是处理数据最理想的工具;经常会使用import pandas as pd,实际上,
import pandas as pd =import pandas
后面的别名是可以省略的,
import pandas as pd
df=pd.DataFrame({'语文':[101,110,123],
'数学':[111,125,135]})
print(df)
改为:
import pandas
df=pandas.DataFrame({'语文':[101,110,123],
'数学':[111,125,135]})
print(df)
但是,as pd我们通常是不会去省略的,因为我们经常要调用pandas的方法或函数,经常打那么多字母看起来冗余,也不方便,这也是一种语言习惯,所以我们用import pandas as pd就行了,这里只是为了说明一下如何调用整个模块!
(2)导入模块的某个函数
例如:
from pandas import Series #通过pandas模块引series对象
s1=Series([88,76,96]) #使用series创建对象
print(s1)
Series类似一维数组,通常由一维数组和这组数据相应的标签(索引)构成;series是一个对象,但是你也可以理解为是pandas的一个函数,通过这个函数可以创建series对象。
python如果需要导入多个函数,多个方法或多个对象,用逗号隔开,比如:
from pandas import Series, DataFrame
5. python保留字
what:什么是保留字?
保留字也称关键字,python有专门的关键词keyword模块
import keyword
print(keyword.kwlist)
keyword.kwlist显示keyword模块下关键词列表,list是列表的意思;后续我们会学列表,比如list.remove可以删除列表中的元素,list.sort可以对列表元素进行排序;所以这是python语法的表达形式,模块.函数/方法,对python模块内容进行处理,后续我们接触的多了就容易理解了。
Why:为什么要知道有哪些保留字?
因为保留字不能被用作任何标识符名称,比如你现在定义一个字段为常量,你可以用:
c=1
print(c)
但是不能用
and=1
print(and)
6. 代码缩进
(1)次级代码必须缩进
用缩进来表示代码块是python的一大特色,不同于c语言用{}来表示上下级关系,python用缩进表示代码的上下级关系。
Python的缩进基本是自动的,当然你肯定也可以手动添加,通过空格和tab键可以添加空格,因为敲这两个键盘通常都以空白形式显示
比如,if/for循环等场景,通常都会有缩进
if True:
print('true')
else:
print('false')
缩进可以理解为目录的一级标题、二级标题,同级标题对称
同理,python的同级代码需对称
如果不对称就会报错,跟sql不一样!
例如,你把上述代码改成:
if True:
print('true')
else:
print('false')
Indentation:首行缩进;
Expected:期望的
Indented:缩进排印的;
Block:街区,大楼;障碍,阻碍;一块,大块,块;
首行缩进错误:应为缩进块
(2)同级代码不可缩进
Python次级代码需要缩进,同理,同级代码是不可缩进的,
比如:
x=1
print(x)
Indentation:首行缩进;
unexpected:想不到的,意外的;不应该存在的
Indent:(行,段落)缩进,缩格;
首行缩进错误:不应该存在缩进。
(3)缩进空格数量要求
这里比较有意思的是,虽然python代码的对称性要求很高,但是基本上用缩进表达代码的优先级关系就行,并不要求完全对称,比如,刚刚的代码改为:
if True:
print('true')
else:
print('false')
所以缩进的空格数量也并没有严格要求,但是次级内容一定要有空格缩进
python默认的是缩进四个空格,但我们改为一个或两个空格也是可以执行的!
if True:
print('true')
else:
print('false')
7. 多行显示
(1)需要使用反斜杠的多行显示
x=1
y=2
c=3
z=x+y+c
print(z)
x=1
y=2
c=3
z=x
+y
+c
print(z)
x=1
y=2
c=3
z=x+
y+
c
print(z)
Syntax:语法
Syntaxerror:语法错误
Invalid:无效的;(计算机)不能识别的
Invalid syntax:不能识别的语法;无效的语法
我们给它加上一个“\”
x=1
y=2
c=3
z=x+\
y+\
c
print(z)
(2)不需要使用反斜杠的多行显示
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠“\”
例如,
list={1,2,3,
4}
print(list)
(3)原理:物理行与逻辑行
什么事物理行?
例如:
a=1
b=2
c=3
z=a+b+c
print(z)
这里的每一行代码都是都是一个物理行,所以这里五行代码就是五个物理行
什么是逻辑行?
a=1
b=2
c=3
z=a+\
b+\
c
print(z)
这里的
z=a+\
b+\
c
看起来是三行代码,但是属于一个逻辑行,因为Python解释器对代码进行解释,一个语句是一个逻辑行,z=a+b+c属于一个语句,只是通过反斜杠用多行显示出来。
而缩进是针对逻辑行的,像这里,你可以缩进也可以不缩进,但有的逻辑行是必须缩进的,上一期我们有讲过这块的内容,就不复述了!
a=1
b=2
c=3
z=a+\
b+\
c
l 逻辑行的“首行”需要顶格,即无缩进;
l 相同逻辑层保持相同的缩进;
l ":"标记一个新的逻辑层
增加缩进表示进入下一个代码层
减少缩进表示返回上一个代码层
if True:
print('true')
else:
print('false')
8. 数值型Number详解
(1)python有哪些数据类型
不可变数据 | Number(数字) |
不可变数据 | String(字符串) |
可变数据 | List(列表) |
不可变数据 | Tuple(元组) |
可变数据 | Set(集合) |
可变数据 | Dictionary(字典) |
string、list 和 tuple 都属于 sequence(序列)。
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
(2)数字型有哪些具体细分类型?
int(整数) | 20 |
float(浮点型) | 20.5 |
bool(布尔型) | true/false |
complex(复数) | 1+2j |
a=20
b=20.5
c=True
d=1+2j
print(type(a),type(b),type(c),type(d))
#type函数:type(对象),查看数据类型的方法!
有一个有意思的地方就是type本身也是有数据类型的,那他是什么数据类型呢?
a=20
print(type(type(a)))
数据类型:整数、布尔型、浮点数和复数
#type函数还有个同类函数isinstance
# isinstance(o, t),其中o表示object对象,t表示type数据类型
a=20
print(isinstance(a,int))
isinstance 和 type 的区别主要有两点:
其一,type函数返回的是数据类型,而isinstance返回的是布尔值,也就是true或false;
其二,type()不会认为子类是一种父类类型;isinstance()会认为子类是一种父类类型。
关于类的内容我们后续再详细展开
(3)布尔型为什么归类为数字型?
这是因为默认情况下true=1,false=0,可以执行四则运算
a=True+1
print(a)
这里需要注意的是true=1,但二者分别属于布尔型和整数型,细分数据类型不同。
print(True==1)
print(True is 1)
(4)什么是复数
complex(复数)
我们把形如 z=a+bi(a、b均为实数)的数称为复数。其中,a 称为实部,b 称为虚部,i 称为虚数单位,“i”的平方等于“-1”。 有的表达式没有意义可以用复数表示。
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
9. 数值运算
(1)符号运算
a=125
b=6
print(a*b)#相乘
print(a/b)#相除结果为浮点型
print(a//b)#相除结果为整数型,向下取整
如果你想相除后四舍五入保留整数该如何操作?
print(round(a/b,0))#四舍五入
print(a%b)#取余数,20余5
print(a**b)#乘方,也就是幂运算
那么,如果我想开根号呢?
print(a**(1/b))#开方
所有二元运算操作符(+、-、*、/、//、%、**)都可以与等号(=)相连, ,形成增强赋值操作符(+=、-=、*=、/=、//=、%=、**=); 即x op= y 等价于 x = x op y ,op 为二元数学操作符。
x=3
x=x+10
print(x)
可以理解为对变量重新赋值,也可以改写为:
x=3
x+=10
print(x)
(2)函数运算
成方还可以用函数表示
a**b =pow(4,2)
print(abs(-10))#取绝对值
divmod(x,y)#(x//y,x%y), 同时返回商数和余数;输出为二元组形式(元组类型)
x=4
y=2
z=divmod(x,y)
print(z)
max(x1,x2,...,xn)#x1,x2,...,xn的最大值,n没有限定
min(x1,x2,...,xn)#x1,x2,...,xn得最小值 n没有限定
有没有sum函数、count函数?
有python自带的sum输入对象是可迭代的。可以是列表,数组,可迭代对象;
numpy中的函数就是我们常见的sum函数,输入可以是列表,元组,数组
可迭代是什么意思?
可迭代对象的意思是指存储了元素的一个容器对象,且容器中的元素可以通过iter( )方法或getitem( )方法访问。并不是指某种具体的数据类型。常见的可迭代对象包括:集合数据类型,如list、tuple、dict、set、str等。
x=3
y=10
print(sum(x,y))
Iterable:可迭代的,可遍历的;
TypeError: 'int' object is not iterable:数据类型错误,整数型对象是不可迭代的。
x=3
y=10
list1=[x,y]
print(sum(list1))
10. 字符串String详解
(1)什么是字符串
字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符
a="123"
print(type(a))
(2)字符串的截取
变量[头下标:尾下标]
a="123hello"
print(a)#输出字符串
print(a[0])#输出字符串的第一个字符
print(a[-1])#输出字符串的最后一个字符
print(a[2:5])#输出字符串的第三个至第五个字符
print(a[2:])#输出字符串的第三个开始后面所有字符
print(a[3:-1])#输出从第四个字符到倒数第二个字符
print(a[:3])#从字符串开头到第3个字符
变量[头下标:尾下标:步长]
a="123hello"
print(a[1:5:2])
(3)字符串的重复显示
a="123hello"
print(a*2)
也可以print(2*a)
(4)字符串的连接
a="123hello"
print(a+"world")
所以前面字符串的重复显示,如果次数不多,也可以用+
a="123hello"
print(a+a)
11. 转义字符
转义字符:以“\”开头
Python 使用反斜杠 \ 转义特殊字符,
如果不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串,这里的 r 指 raw,天然的,未经加工的;(信息)未经处理的,原始的;即 raw string,会自动将反斜杠转义
(1)回车符,空行,将光标移动到下一行开头:“\n”
print("\n")#输出空行
print("a\nb")#ab分行显示
内容回顾:同行显示
x=a
x="a"
y="b"
print(x,end=' ')
print(y,end=' ')
将x的末尾未改为空格,而非默认的制表符;
改为:
x="a"
y="b"
print(x,end='\n')
print(y,end='\n')
注意:多行代码一行显示用“;”连接
x="a";y="b";print(x,end='\n');print(y,end='\n')
(2)回车符,将光标移动到本行开头:“\r”
print("\r")#输出空行
print("a\rb")#输出“\r”后面的字符内容
(3)tab键,水平制表符,相当于四个空格:“\t”
print("a\tb")
(4)退格,backspace,将光标位置移到前一列“\b”
print("a\bb")
(5)字符串分行显示:字符串行尾“\”
x=1
y=2
c=3
z=x+\
y+\
c
print(z)
(6)打印反斜线、单引号、双引号:“\+对象”
print("\\")
print("\''")
print('\""')
注意:区分单引号与双引号,如果是转义单引号,字符串用双引号,如果是转义双引号,字符串用单引号。
(7)将反斜杠转义:r”[字符串]\字符串”
print(r"a\nb")#将反斜杠转义
但是不能
print(r"\")
EOL:寿命终止;EndOfLine 行结束
While:当…时,尽管,直到…为止
Scanning:浏览的,扫描的,搜索的;
Literal:字面的,用字母表示的;文字
EOL while scanning string literal: 当扫描字符串文字时结束符存在语法措施;读取字符串时出错
这是为什么呢?
用r转义反斜杠时,最后一个字符不可以是反斜杠,将反斜杠转义:r”[字符串]\字符串”。
12. 列表List详解
(1)什么是列表
列表是python非常常见的数据类型,将不同类型数据合并为一类。
列表的表现形式为方括号 [] ,并用逗号分隔元素;
list=[1,2,3,4]
print(a)
print(type(a))
(2)列表元素类型
列表中元素的类型可以不相同,可以同时包含数字、字符串等,甚至可以包含列表(嵌套);
list =[1,[2,3],4,"abc",True]
print(list)
print(type(list))
(3)列表的索引和截取
列表可以被索引和截取,返回一个包含所需元素的新列表,与字符串的操作基本一致;
list =[1,[2,3],4,"abc",True]
print(list)#输出字符串
print(list [0])#输出字符串的第一个元素
print(list [-1])#输出字符串的最后一个元素
print(list [2:5])#输出字符串的第三个至第5个元素,第五个元素索引号是4
print(list [2:])#输出字符串的第三个开始后面所有元素
print(list [3:-1])#输出从第四个字符到倒数第二个元素
print(list [:3])#从字符串开头到第3个元素
print(list [1:5:2])
print(list *2)
print(list +["world"])
(4)列表的翻转操作
列表的截取和索引可以用以下公式表示,
变量[头下标:尾下标:步长]
其中第三个参数步长是可以省略的,如果步长为负数表示逆向读取,类似“180度翻转”操作。
list=[1,2,3,4,5]
print(list[-1::-1])
# 第一个参数 -1 表示最后一个元素
# 第二个参数为空,表示移动到列表末尾
# 第三个参数为步长,-1 表示逆向
(5)列表是可变数据类型
列表内容可以更改,字符串内容是不可更改的;
list =[1,[2,3],4,"abc",True]
list[0]=2
print(list)
但如果是字符串:
list ="1,2,3,4,5"
list [0]=2
print(list)
Item:项目,品项,条款
Assignment:作业,任务,分配
item assignment:项目分配
TypeError: 'str' object does not support item assignment
“str”对象不支持项目分配
原因是python中字符串是一个不可变类型,想要改变python字符串中的某个字符,只能对字符串重新赋值。
13. 元组Tuple详解
(1)什么是元组
元组写在小括号 () 里,元素之间用逗号隔开;
tuple=(1,2,3,4,5)
print(tuple)
print(type(tuple))
(2)元组是不可变数据类型
与列表不同的是元组内的元素是不可更改的;
tuple=(1,2,3,4,5)
tuple[0]=2
也就是说元组不支持这类任务指派,这不是它的工作,它也没这个权力,如果要更改元组里的内容,只能重新定义元组,与字符串一样的操作!
(3)元组的索引与切片
元组也可以被索引和切片,方法一样
tuple=(1,2,3,4,5)
print(tuple)
print(tuple[0])
print(tuple[1:3])
需要注意的是括号里的内容是索引号,索引号是从0开始的,所以末端通常都是区间范围内的[ ),也就是末端的位置需要-1.
(4)单个元素的元组创建的特殊性
空元组和单个元素的元组创建
tuple1=()
tuple2=(1)
tuple3=(1,)
print(tuple1,tuple2,tuple3)
注:当元组只包含一个元素,需要在元素后添加逗号,这一点跟字符串和列表都不一样;python解释器把(3)当作一个算数表达式来处理的,它的结果就是一个int型对象。为了和只有单个元素的元组区分,python规定要在元素后面带上一个逗号。
14. 集合Set简介
(1)什么是集合
由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素,比如我们可以去判断某个元素是否在集合内。
(2)集合的创建方法
方法1:{}
sets={"hello","world","we","love","life"}
print(sets)
print(type(sets))
set是无序的,内部元素之间没有顺序与位置的概念,也不支持下标操作。
比如我们可以去判断某个元素是否在集合内。
sets={"hello","world","we","love","life"}
if "we" in sets:
print(True)
else:
print(False)
方法2:set函数
sets=set("helloworldwelovelife")
print(sets)
注意:set函数输出的结果是去重的
(3)集合的运算
sets_a=set("helloworld")
sets_b=set("welovelife")
print(sets_a-sets_b)#a和b的差集:a有b没有
print(sets_a|sets_b)#a和b的并集:a有或b有的元素去重
print(sets_a&sets_b)#a和b的交集:a有b都有的元素去重
print(sets_a^sets_b)#a和b不同时存在的元素:a有b没有或b有a没有
15. 字典Dictionary简介
(1)什么是字典?
列表是有序的对象集合,字典是无序的对象集合;
字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。所以说,字典是一对一对的,键值对。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
(2)如何创建字典?
方法一:
dict={}
dict["语文"]=[112,113,115]
dict["数学"]=[102,119,135]
dict["英语"]=[109,116,138]
print(dict)
方法二:
dict={}
dict["语文"]=[112,113,115]
dict["数学"]=[102,119,135]
print(dict)
(3)基于key输出value
dict={"语文":[111,123,134],
"数学":[140,134,125],
"英语":[109,116,138]}
print(dict["数学"])#输出数学成绩
print(dict.keys())#输出键
print(dict.values())#输出值
注:字典的关键字必须为不可变类型,且不能重复
(4)dictionary属于可变数据类型
#key不可变,dictionary可变数据类型
dict={}
dict["语文"]=[112,114,125]
dict["语文"]=[123,114,125]
print(dict)
16. 基础数据类型转换
(1)整数int转换为浮点float
隐性转换:整数+浮点=浮点
a=1.23
b=4
c=a+b
print(c,type(c))
可以理解为是一种隐性的数据类型转换机制,因为 Python 会将较小的数据类型转换为较大的数据类型,以避免数据丢失。
(2)转化为整型:函数int()
#浮点型转换为整型
a=1.23
z=int(a)
print(z)
注意:int()函数为向下取整,如需四舍五入,可采用round函数
#字符串转换为整型
a="3"
z=int(a)
print(z,type(z))
(3)转换为浮点型:float()
#整数型转换为浮点型
a=float(1)
print(a,type(a))#默认保留一位小数
#字符串转换为浮点型
a=float("3")
print(a,type(a))
#默认保留一位小数,那么能否用来设置浮点型数据小数位数为1呢?
a=float(3.1415)
print(a,type(a))
(4)转换为字符串:str()
#浮点型转为字符串
a=str(3.1415)
print(a,type(a))
(5)整数和字符串如何运算
#整数+字符串的结果
a=520
b="1314"
print(a+b)
Operand:运算数,运算对象;
#错误解决
方法1:
a=520
b=int("1314")
print(a+b)
方法2:
a=520
b=float("1314")
print(a+b,type(a+b))
17. 个性化数据类型转换
(1)转换为表达式字符串:repr()
a=520
b=str(a)
print(b,type(b))
a=520
b=repr(a)
print(b,type(b))
(2)str()和repr()的差异
#原变量都加上引号
a="520"
b=str(a)
print(b,type(b))
a="520"
b=repr(a)
print(b,type(b))
(3)repr()的应用场景
#解析特殊字符,比如转义字符
#比如你想判断表格数据中有无空格,有无tab键等
a="节日\t鲜花\t寓意\n七夕\t520\tiloveyou"
print(a)
b=repr(a)
print(b,type(b))
(4)执行一个字符串表达式:eval()
#eval() 函数用来执行一个字符串表达式,并返回表达式的值
a="34+52"
print(a,eval(a))
(5)转换为列表:list()
#字符串转换为列表
str="hello world"
print(list(str))
(6)转换为元组:tuple()
#列表转换为元组
list=[1,2,3,4,5]
print(tuple(list))
(7)转换为集合:set()
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
#字符串转换为集合/创建集合
set_a=set("helloworld")
set_b=set("iloveyou")
print(set_a,set_b)
注意:字符串要素去重,可转换为集合,字符串要素不去重,可转换为列表或元组。
(8)转换为不可变集合:frozenset()
集合set是可变数据类型,返回的结果跟原始数据不一样,并且可以添加删除元素,而frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
a=frozenset("helloworld")
print(a)
18. Python运算符:=与==有何不同
一、比较运算符
(1)比较运算符的内容
a=20
b=30
print("a==b",a==b)#等于
print("a!=b",a!=b)#不等于,python3不支持<>
print("a>=b",a>=b)#大于等于
print("a<=b",a<=b)#小于等于
print("a>b",a>b)#大于
print("a<b",a<b)#小于
== | 等于 - 比较对象是否相等 |
!= | 不等于 - 比较两个对象是否不相等 |
> | 大于 - 返回x是否大于y |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 |
>= | 大于等于 - 返回x是否大于等于y。 |
<= | 小于等于 - 返回x是否小于等于y。 |
(2)比较运算符的常见场景
a=2
b=3
if (a==b):
print("a和b相等")
else:
print("a和b不相等")
二、赋值运算符
(3)单个变量的赋值运算
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建;
变量没有类型,所说的"类型"是变量所指的内存中对象的类型;
等号(=)用来给变量赋值,等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
x=1
print(x)
如果你没有x=1,而直接print(x)就会出错
(5)加法赋值运算
a=2
b=3
a+=b
print("a+b",a)#等于
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取余数赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
(4)多个变量的赋值运算
a=b=c="hello"
print(a,b,c)
a,b,c=1,"hello",True
print(a,b,c)
19. Python逻辑运算符
(1)逻辑运算符的基础场景
a=2
b=3
c=4
print((a>b) and (b<c))#有一个为false返回false
print((a>b) or (b<c))#有一个为ture返回true
print(not(a>b))#对象为true则返回false
因为逻辑运算符返回逻辑值,所以也经常应用于if else条件语句中。
(2)逻辑运算符的特殊场景
a=2
b=3
print("a=2,b=3,a and b:",a and b)
print("a=2,b=3,a or b:",a or b)
print("a=2,b=3,not(a and b):",not(a and b))
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
20. Python成员和身份运算符
In:如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in:如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
(1)成员运算符in和not in的应用场景
i=1
list=[1,2,3,4,5]
if i in list:
print("you are lucky")
else:
print("thanks for your participation")
i=1
list=[1,2,3,4,5]
if i not in list:
print("you are out")
else:
print("you can continue")
列表、字符串等都适用
(2)身份运算符is的应用场景
Is:is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回True,否则返回 False
is not:is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
a=10
b=10
if a is b:
print("a和b相等")
else:
print("a和b不相等")
a=10
b=10
if a == b:
print("a和b相等")
else:
print("a和b不相等")
(3)身份运算符is not和!=
a=10
b=10
if a is not b:
print("a和b不相等")
else:
print("a和b相等")
a=10
b=10
if a != b:
print("a和b不相等")
else:
print("a和b相等")
(3)身份运算符is和赋值运算符==的差异
is 与 == 区别看似相同,但二者之间是存在差异的,is 用于判断两个变量引用对象是否为同一个,而== 用于判断引用变量的值是否相等。
a=[1,2,3,4,5]
b=a[:]
print(a,type(a),b,type(b))
print(a==b)
print(a is b)
(4)Python运算符优先级
优先级 | 运算符 | 描述 |
1 | (expressions...), | 圆括号的表达式 |
2 | [expressions...], {key: value...}, {expressions...} | |
3 | x[index], x[index:index], x(arguments...), x.attribute | 读取,切片,调用,属性引用 |
4 | await x | await 表达式 |
5 | ** | 乘方(指数) |
6 | +x, -x, ~x | 正,负,按位非 NOT |
7 | *, @, /, //, % | 乘,矩阵乘,除,整除,取余 |
8 | +, - | 加和减 |
9 | <<, >> | 移位 |
10 | & | 按位与 AND |
11 | ^ | 按位异或 XOR |
12 | | | 按位或 OR |
13 | in,not in, is,is not, <, <=, >, >=, !=, == | 比较运算,包括成员检测和标识号检测 |
14 | not x | 逻辑非 NOT |
15 | and | 逻辑与 AND |
16 | or | 逻辑或 OR |
17 | if -- else | 条件表达式 |
18 | lambda | lambda 表达式 |
19 | := | 赋值表达式 |
21. 字符串格式化
%:格式化操作符
(1)%s:格式化字符串
name="小红"
z="%s,生日快乐"%(name)
print(z)
你可以直接更改最后括号中对应的参数,比如写邮件、签合同等场景
(2)%d:格式化整数
name="小红"
age=18
z="%s,%d岁生日快乐"%(name,age)
print(z)
有符号十进制度整数,%06d表示输出6位整数,不足部分用0补齐
name="小红"
num=1
z="%s,员工编号%06d"%(name,num)
print(z)
(3)字符串格式化在爬虫中的应用
字符串格式化经常应用于爬虫网页翻页:
for i in range(1,5):
url=' http://www.espn.com/nba /salaries/_/page/%s/seasontype/4 ' % i
print(url)
(4)%f:f=float,格式化浮点数字
name="小红"
height=180.786
z="%s,身高%f"%(name,height)
print(z)
(5)%.nf格式化浮点数保留n位小数
可指定小数点后的精度,%.nf表示保留n位小数
name="小红"
height=180.786
z="%s,身高%.2f"%(name,height)
print(z)
(6)格式化字符串的函数str.format()
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能
字符串.format(),可以在任意版本中使用,在需要使用变量的地方{ }占位,' { },{ }... '.format(变量,变量,...)
name="小红"
height=180.786
z="我叫{},身高{}".format(name,height)
print(z)
保留两位小数
name="小红"
height=180.786
z="我叫{},身高{:.2f}".format(name,height)
print(z)
(7)f字符串的格式化方法
F-string(f字符串的格式化方法)
如果想使用f字符串格式化方法,python版本大于3.6才可,.需要在字符串的前边加上f“ ”或者F" ",占位符号统一变为{ },语法为f"{变量}"或者F"{变量}"。
name="小红"
height=180.786
z=f"我叫{name},身高{height:.2f}"
print(z)
这里的f可大写可小写
22. 字符串大小写转换与判断函数
(1)str.capitalize()#字符串整个句子首字母大写
a="the history of gossip"
b=a.capitalize()
print(b)
(2)str.title()#字符串每个单词首字母大写
a="本期标题:the history of gossip"
b=a.title()
print(b)
(3)str.upper()#字符串的小写字母转为大写字母
a="the history of gossip"
b=a.upper()
print(b)
(4)str.lower()#字符串的所有大写字符为小写
a="the history of GOSSIP"
b=a.lower()
print(b)
(5)str. islower()#字符串中所有字母均为小写返回true
a="本期标题:the history of GOSSIP"
b=a.islower()
print(b)
修改
a="本期标题:the history of gossip"
b=a.islower()
print(b)
(6)str. isupper ()#字符串中所有字母均为大写返回true
a="本期标题:the history of GOSSIP "
b=a.isupper()
print(b)
修改
a="本期标题:the history of gossip"
b=a.upper().isupper()
print(b)
23. 爬虫常用函数之startswith和endswith
(5)endswith():判断字符串是否以指定后缀结尾
endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 "start" 与 "end" 为检索字符串的开始与结束位置。
str.endswith(suffix[, start[, end]])
suffix -- 该参数可以是一个字符串或者是一个元素。
start -- 字符串中的开始位置。
end -- 字符中结束位置。
如果字符串含有指定的后缀返回 True,否则返回 False。
str="123456"
z=str.endswith("456")
print(z)
start 参数以 0 为第一个字符索引值。
end 参数以 1 为第一个字符索引值。
str="123456"
z=str.endswith("456",0,5)#str从第1个到第5个个字符是否以456结尾
print(z)
修改
str="123456"
z=str.endswith("456",0,6)
print(z)
startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数beg 和 end 指定值,则在指定范围内检查。
str -- 检测的字符串。
substr -- 指定的子字符串。
strbeg -- 可选参数用于设置字符串检测的起始位置。
strend -- 可选参数用于设置字符串检测的结束位置。
str.startswith(substr, beg=0,end=len(string));
案例:
str="123456"
z=str.startswith("123")
print(z)
str="123456"
z=str.startswith("123",0,6)
print(z)
二、python项目实战
24. 六行代码即可爬取完整网页数据
import pandas as pd
for i in range(1,14):
url=" http://www. espn.com/nba/salaries/_ /page/ {}/seasontype/1".format(i)#str.format()
df=pd.DataFrame()#只能输入二维数组
df=df.append(pd.read_html(url))#pd.read_html(url)list
df.to_csv('/Users/kusa/Desktop/test/NBA4.csv',mode="a")
25. 四行代码绘制多种炫酷水球图
场景一
#从百度echarts图表库导入Liquid模块
from pyecharts.charts import Liquid
调用Liquid()函数
liquid=Liquid()
#Add()方法可以对水球图的颜色等参数进行设置
liquid.add('水球图',[0.7])
#保存水球图到指定路径
liquid.render('/Users/kusa/Desktop/test/python数据源/myliquid.html')
场景一
#Add()方法可以对水球图的颜色等参数进行设置
from pyecharts.charts import Liquid
liquid=Liquid()
#Add()方法可以对水球图的颜色等参数进行设置
liquid.add('水球图',[0.7])
liquid.render('/Users/kusa/Desktop/test/python数据源/myliquid.html')
#render:使成为;使变得;使处于某状态
场景二
#Add()方法可以对水球图的颜色等参数进行设置
from pyecharts.charts import Liquid
liquid=Liquid()
#Add()方法可以对水球图的颜色等参数进行设置
liquid.add('水球图',[0.7,0.6,0.5])
liquid.render('/Users/kusa/Desktop/test/python数据源/myliquid.html')
#render:使成为;使变得;使处于某状态
场景三
#Add()方法可以对水球图的颜色等参数进行设置
from pyecharts.charts import Liquid
liquid=Liquid()
#Add()方法可以对水球图的颜色等参数进行设置
liquid.add('水球图',[0.7,0.6,0.5],shape='diamond')
liquid.render('/Users/kusa/Desktop/test/python数据源/myliquid.html')
#render:使成为;使变得;使处于某状态
场景四
#Add()方法可以对水球图的颜色等参数进行设置
from pyecharts.charts import Liquid
liquid=Liquid()
#Add()方法可以对水球图的颜色等参数进行设置
liquid.add('水球图',[0.6],shape='diamond',color=['#2E8B57'])
liquid.render('/Users/kusa/Desktop/test/python数据源/myliquid.html')
#render:使成为;使变得;使处于某状态
场景五
#Add()方法可以对水球图的颜色等参数进行设置
from pyecharts.charts import Liquid
liquid=Liquid()
#Add()方法可以对水球图的颜色等参数进行设置
liquid.add('水球图',[0.6],shape='diamond',is_outline_show=False,color=['#2E8B57'])
liquid.render('/Users/kusa/Desktop/test/python数据源/myliquid.html')
#render:使成为;使变得;使处于某状态