目录
一、基础知识
1、变量
变量是表示(或指向)特定值的名称,python跟c/c++/java不同的是,变量的定义不用指定变量的具体类型,且变量使用前必须赋值,因为他没有默认值。如下定义了整形变量varInt的值为3,浮点型变量varFloat的值为3.2,字符串变量varStr值为SHEN。
varInt=3
varFloat=3.2
varStr="SHEN"
2、表达式
Python的除法运算,默认按照浮点型来计算,意思是不论是不是整形数据相除,都讲整形数据转换成浮点型来进行相除,最后的结果始终为浮点型。如下
A=10/3 #结果为3.3333333333333335
B=10/3.0 #结果为3.3333333333333335
如果想丢弃小数部分,可以使用运算符//来实现。如下:
A=10//3 #结果为3
B=10//3.0 #结果为3.0
如果想求模运算,可以使用运算符%来实现。如下:
A=10%3 #结果为1
B=10%3.0 #结果为1.0
如果想求幂运算,可以使用运算符**来实现。如下:
A=2**5 #结果为2的5次方,即32
B=-2**2 #结果为2的2次方的负数即-4。**运算符优先级高于-
C=(-2)**2 #结果为-2的2次方,即4
3、输入输出
Python可通过input函数来接受用户输入,但是该方式接收的输入全是按照字符串处理,python还可通过print函数来打印变量或其他的值。如下:
x=input("请输入x:")
#该语句将报错,因为所有输入的结果都是字符串类型,+运算符两侧类型不一样因此报错
y=x+10
#该语句先通过int将输入的字符串转换成整形数据,如果输入的整形数据会得到正确结果,否则转换失败程序报错
Z=int(x)+10
print可用于打印一个表达式,这个表达式要么是字符串,要么将自动转换为字符串。但实际上,你可
同时打印多个表达式,且用逗号分隔它们,
将按照它们的顺序依次转换成字符串并打印出来且用空格分开。
如下:
var=10
str="shen"
print(var,"xxx",str,'s' in str)#输出结果:10 xxx shen True
print还可以指定一些属性,其格式:
属性名称
=
字符串
,例如属性sep表示print将所有参数用后面的字符串串联起来;属性end表示结尾跟上后面指定的字符串如下示例:
print("I", "am", "SHEN") #输出结果:I am SHEN
print("I", "am", "SHEN",sep="-") #输出结果:I-am-SHEN
print("I", "am", "SHEN",sep="-",end="###") #输出结果:I-am-SHEN###
4、赋值
赋值,即将某个值赋给一个变量,跟其他语言一样,通过=来进行。Python除了普通的赋值外,还支持同时对多个变量进行赋值。
1)、序列解包
序列解包又叫可迭代对象解包),
将一个序列(或任何可迭代对象,包括字典、字符串、列表、元组)解包,并将得到的值存储到一系列变量中
。如下:
#对元组进行解包
var=(1,2,3)
x,y,z=var
print(x,y,z) #xyz的值分别为元组的1 2 3
#对字符串进行解包
var="shen"
a,b,c,d=var
print(a,b,c,d) #abcd的值分别为字符串s h e n
#对字典进行解包
var={'name': 'Robin', 'home': 'chengdu'}
#a,b,c,d=var #不能直接对字典进行解包
#对字典项进行解包
key, value = var.popitem()
print(key,value) #key和value的值分别为home和chengdu
解包的
序列包含的元素个数必须与你在等号左边列出的目标个数相同
,否则Python将引发异常。为了解决这样的问题,python还提供了运算符*,可使用星号运算符*来收集多余的值,这样无需确保值和变量的个数相同。需要注意的是
被
*
修饰的变量直接被当成了列表类型
来处理。如下:
var=(1,2,3,4,5)
x,y,*z=var
print(z) #输出结果:[3, 4, 5] 即使var是非列表,被*修饰的z最后返回的值还是列表
x,*y,z=var
print(z) #输出结果:5
*x,y,z=var
print(x) #输出结果:[1, 2, 3]
2)、链式赋值
链式赋值是一种快捷方式,用于将多个变量关联到同一个值,
即将一个值同时赋值到不同的变量中
,跟上面序列解包的区别就是序列解包是多个值赋值给多个变量。如下:
x=y=somefunction()#跟下面等价
y=somefunction()
X=y
3)、增强赋值
增强赋值跟c/c++/java的+ - * / %等运算符的简写模式。
二、数据结构
Python支持一种数据结构的基本概念为容器,容器可以理解成包含其他对象的对象。容器包含了
序列、映射、集合
三种数据结构。
序列:
序列中的每个元素都有编号
,即位置或者索引。序列又有
字符串、列表、元组
三种类型。
映射:
映射中的每个元素都有键
,即名字注意没有编号。映射的容器主要是字典。
集合:既不是序列也不是映射。
1、序列
序列中的每个元素都有编号,其中字符串是一种特殊的序列,而列表是一种可以对其元素编号或者元素成员的值进行修改的序列,元组是一种不可以对其元素编号或者元素成员的值进行修改的序列。
字符串
:字符串始终使用
单引号或者双引号
来将其括起来。个人认为,在解析的时候先确认字符串的开头是”还是’,如果已经确认是单引号还是双引号,那么就会查找第二个”或’来作为字符串的结束。
varStr1="I am DingPC"
varStr2='I am DingPC'
print("诸神黄昏") #输出结果:诸神黄昏
print('诸神黄昏') #输出结果:诸神黄昏
print("诸'神黄'昏") #输出结果:诸’神黄’昏
print('诸"神黄"昏') #输出结果:诸”神黄”昏
print('诸神""""黄昏') #输出结果:诸神”””黄昏
print("诸神’’’黄昏") #输出结果:诸神’’’黄昏
如上代码可以总结如下:即被双引号扩起来的字符串内部可以使用任意个单引号;被单引号括起来的字符串内部可以使用任意个双引号;特殊字符包括单引号双引号可以使用\进行转义。同java一样,可以使用+运算符进行字符串拼接。具体详情见后。
列表
:列表也是一种序列,并且可以对其进行修改,即序列的所有特性及序列的通用操作方式都能够应用于列表。列表的创建通常是由
中括号
[]
将元素成员括起来。
varList1=[1,2,3,4,5,6,7] #定义列表varList1,其元素成员全是整形数据
varList2=["shen", "ding", "pengcheng"] #定义列表varList2,其元素成员全是字符串数据
varList3=[1,2,3,"dpc",5,6,"xyc"]#定义列表varList3,其元素成员有字符串数据也有整形数据
varStr="shen"
varInt=7
#定义列表varList,初始化的时候可以直接将变量作为元素成员
varList=[1,2,3,varStr,5,6,varInt,8]
#列表进行初始化的时候没有使用类似指针方式,这里重新赋值后,列表里面的元素没有更改
varStr="xxx"
Print(varList)#结果:[1, 2, 3, 'shen', 5, 6, 7, 8]
元组
:元组的创建通常是由
小括号
()
将元素成员括起来。元组也是一种序列,但是一旦被初始化就无法对其进行修改,即元组的某些特性及通用操作方式不能够应用于元组,例如:元组Tuple就没有提供append()、insert()、pop()方法。
varTuple1=(1,2,3,4,5,6,7)
varTuple2=(1,2,3,"dpc",5,6,"xyc")
varStr="shen"
varInt=7
#定义列表varList,初始化的时候可以直接将变量作为元素成员
varTuple=(1,2,3,varStr,5,6,varInt,8)
#列表进行初始化的时候单纯的将其值获取出来对序列进行初始化
varStr="xxx"
Print(varTuple)#结果:(1, 2, 3, 'shen', 5, 6, 7, 8)
1.1、通用操作
1)、索引
序列中的所有元素都有编号都是从0开始递增,这称为索引(indexing)。你可使用索引来获取元素。这种索引方式适用于所有序列。当你使用负数索引时,Python将从右(即从最后一个元素)开始往左数,因此-1是最后一个元素的位置,-2是倒数第二个元素的位置,依次类推。
varList=[1,2,3,4,5,6,7]
varList[0]='x'