1.标识符命名规则
- 只能由数字、字母、下划线组成
- 不能以数字开头
- 不能是关键字(如class等python内部已经使用的标识符)
- 区分大小写
查看关键字:
print(keyword.kwlist)
2.数据类型
2.1常见数据类型
2.1.1Number数值型:
整数int, 比如 3
小数float(也叫浮点数) ,比如 6.5
复数complex
2.1.2字符串String --不可变
(1)单引号或双引号包围的一串字符。 比如 ‘你好’
(2)三对单(双)引号:用来定义多行字符串
str='''
hi
你好
'''
(3)如果字符串内容需要打印引号–使用转义字符"
print("hi,\"TOM\"")
(4)单引号中出现单引号,会报错,可以用双引号将单引号包起来或者使用转义’
双引号同理
str2="It's ok"
print(str2)
str1='It\'s ok' # 输出It's ok
(5)字符串连接:str1+str2
str1='hi'
str2='Tom'
print(str1+" "+str2)
(6)字符串重复输出:*
str1='aa'
print(str1*2)
(7)输出换行符
print(r'\n')# 第一种加r,表示后边的所有转义符均不生效
print('\\n')# 第二种加\,表示后边的\n无特殊意义
# 第三种,当表示路径时,可以用正斜杠/note,代替\note,D:/note.txt
(8)字符串的下标,也就是索引,是字符串种每个字符的编号,可以快速找到对应的数据
- 从0开始,最大下标是字符串长度-1,可以使用负数下标,最后一位是-1,倒数第二位是-2
- 字符串是不可变对象,不可修改某一位的值
str1="abcdefg"
print(str1[6])
print(str1[-1])
str1[0]='A'# 报错
(9)字符串的切片左闭右开,切片为新对象,不改变原有的字符串的值
步长省略默认步长是1,接口自动化一般步长为1,步长可以为负数(表示从后往前取)
切片终止值与下标最大数无关
str1="konwledge is power"
slice1=str1[0:9]
print(slice1)#输出konwledge
slice3=str1[:9:]#起始省略,从0开始
print(slice3)#konwledg
str1="konwledge is power"
slice1=str1[0:9:2]
print(slice1) #输出knlde
str1="konwledge is power"
slice1=str1[13:18]
slice2=str1[-5:]#当终止下标不写时,表示从起始下标开始,后边的值全取
print(slice1)# power
slice2=str1[::-1]
print(slice2)#rewop si egdelwnok 倒着取
slice3=str1[8::-1]
print(slice3)#egdelwnok 只写起始,不写终止,倒着全取
2.1.3 列表list–可变
列表是一种序列类型,由若干个元素组成,元素之间有先后顺序关系
(1)列表中的元素可以是任意对象
list1=[1,'abc',[10,20],(10,20),{'name':'rose'}]
print(list1)
(2)列表list可以修改元素,下标索引从0开始
list1=[1,'abc',[10,20],(10,20),{'name':'rose'}]
print(list1)
list1[0]=2
print(list1)
(3)列表元素新增append(),只能添加元素到列表末尾
list2=[1,2]
list2.append(3)
print(list2)
(4)添加元素到指定列表位置insert(index,value),当index过大时,就相当于添加到末尾,当index为负数时,就相当于加到首位
list3=[1,2]
list3.insert(0,3)
print(list3)
(5)列表的拼接extend(),会改变list1的值
list1=[1,2]
list2=[3,4]
list3='abc'
list2.extend(list1)# 3,4,1,2
list2.extend(list3)# 3,4,1,2,a,b,c
print(list2)
(6)列表删除pop()
不写参数,删除最后一位,写参数,删除指定位置的值
list1=[1,2,3,4]
list1.pop()# 不写参数
print(list1)# 1 2 3
list1=[1,2,3,4]
list1.pop(2)# 写参数,删除指定位置的值
print(list1)# 1 2 4
(7)列表删除指定值remove()
没有指定值就会报错
list1=[1,2,3,4]
list1.remove(2)# 或者list1.remove(list1[1])
print(list1)
(8)列表删除,del–关键字删除
list1=[1,2,1,2,2,3,4]
del list1[0]
print(list1)
del list1#整个list1列表直接删除,包括变量名
print(list1)#会报错NameError: name 'list1' is not defined
(9)列表的切片
步长为负数,起始大于终止,左开右闭
list1=[1,2,3,4,5,6,7,8,9]
slice1=list1[5:8]
slice2=list1[-4:-1]
print(slice1)# [6, 7, 8]
print(slice2)#[6, 7, 8]
slice3=list1[-5:-8:-1]
slice4=list1[4:1:-1]
print(slice3)#[5, 4, 3]
print(slice4)#[5, 4, 3]
列表切片会生成一个新的对象,不改变原有列表的值
list1=[1,2,3,4,5,6,7,8,9]
list1_slice=list1[:]#起始和终止不写,表示全切
print(id(list1))# id(对象)得到对象在内存中的编号
print(id(list1_slice))
2.1.4 元组–不可变
tuple1=(1,2,'a','b')
print(tuple1)
如果元组中只有一个元素,则需要额外加一个逗号,否则会被系统认为不是元组类型
tuple1=(122)
print(type(tuple1))
tuple1=(122,)
print(type(tuple1))
如果元组中的元素包含是子列表,则子列表的值可以修改
tuple1=(1,2,'a','b',[1,2,3])
tuple1[4][0]=111
print(tuple1)
2.1.5 布尔值
有两个值:
True为真,用1表示
False为假,用0表示
布尔表达式:运用比较运算符进行比较的式子,运算结果为布尔值
==判断为恒等 print(1==2)#False
!=为不相等
还有>,>=,<,<=进行比较判断#print(10>9)#True
逻辑运算:与或非
and:A and B,AB全为真,结果为真;AB有一个为假,结果为假
or:A or B,AB全为假,结果为假;AB有一个为真,结果为真
not:非,非真即假,非假即真
优先级:not>and>or
短路与:第一个为假,则全部为假
短路或:第一个为真,则全为真
print(1>2)#False
print('a'>'A')#True,字符串比较先看第一位,首位相同向后继续看,按照ASCII码97>65
print(True+1)#可以参与运算
print(True and 10)#10
print(False and 10)#False 短路与
print(1>2 or 10>9) #True
list1=[1,2,3,[4,5]]
print(1 in list1)# True
print(1 not in list1)# False
print(5 in list1)#False
print(5 in list1[3])#True
2.1.6字典dict
比如 {1:‘mike’, 2:‘jack’}
注意:Python语言还可以 自己定义数据类型
2.2 数据类型转换
int():将对象转为int型,被转的对象本身里边是数字’2’,‘33’,如果是‘app’就不能转,会报错
str():将对象转为str型
a='2'
b=3
print(a+b)# 报错
print(int(a)+b)# 输出5
print(a+str(b))#输出23
3.变量-某个对象的名字
- 变量名=值(赋值)
a=10
- 交换两个变量的值
a=10
b=20
a,b=b,a
print(a,b)
- 可以连续赋值,但要保证变量个数与数值个数相同
a,b,c=1,2,3
print(a,b,c)
- 赋值可以使用sum+=1,sum-=1的写法,但python没有i++,i–的写法
sum=1
sum+=2
print(sum) //sum=3
4.运算符
- 加法(+)、减法(-)、乘法(*)、除法(/取整,%取余)
- 次方(10**3–10的三次方):
data=10
print(data**2)
- 成员运算符:in 在里边,not in 不在里边
str1='hi'
print('hi' in str1)
print('hi' not in str1 )
5.type函数
Python解释器 内置了 type函数,可以用来查看数据对象的类型
Python解释器 内置了 type函数,可以用来查看数据对象的类型
6.拷贝
6.1.浅拷贝
浅拷贝生成新对象,但列表中的子列表仍然是同一对象
(1)要求将listA中的1改为11,但保留原有的值
import copy
listA=[1,2,3,4]
listB=copy.copy(listA)
listA[0]=11
print(listA)
print(listB)
(2)要求修改接口A的子列表的第0位的值,改为98,不可以改变接口B的值
import copy
listA=[100,200,300,[400,500]]
listB=copy.copy(listA)
listA[3][0]=98
print(listA)
print(listB)
可以看到并不满足需求,B的子列表的值仍然被改变了
为了达到要求,可以使用深拷贝
(3)全切片相当于浅拷贝
listA=[100,200,300,[400,500]]
listB=listA[:]
listA[0]=98
listA[3][0]=98
print(listA)
print(listB)
6.2深拷贝
深拷贝:列表和子列表都是新对象
import copy
listA=[100,200,300,[400,500]]
listB=copy.deepcopy(listA)
listA[3][0]=98
print(listA)
print(listB)
7.条件判断
7.1条件语句
if: 如果条件满足,执行;若不满足,不执行
else: if可以搭配else,若满足则执行if内的语句,否则执行else语句
**if…elif:**多分支,只执行其中一个分支,其他分支不再执行
if 2>1:
print("执行语句")
if 1>1:
print("执行语句")
else:
print("else语句")
用户输入分数,大于等于90打印优秀,大于等于60及格,小于60,不及格
#
score=input("请输入一个数字:")#从键盘读取用户输入,返回值是str型
if score.isdigit():#判断字符串对象是否是纯数字,返回bool型
score=int(score)
if score>=90:
print('优秀')
elif score>=60:
print('及格')
else:
print('不及格')
else:
print("您输入的不是整数")
7.2条件语句的嵌套
第一层满足的情况下,再判断第二层
year=input("请输入年份:")
if year.isdigit():
year=int(year)
if year%400==0:
print("是闰年")
elif year%4==0:
if year%100!=0:
print("是闰年")
else:
print('不是闰年')
else:
print("您输入的不是整数")
8.读取文件
8.1文件的读取文本文件with open
(1)read()
filepath="D:/codeZM/AutoDemo/untitled/fileTmp/note.txt"
with open(filepath) as file1:
print(file1.read())
(2)readline()读取第一行
filepath="D:/codeZM/AutoDemo/untitled/fileTmp/note.txt"
with open(filepath) as file1:
print(file1.readline())
(3)readlines()读取文件内容,返回值是列表,每行是列表中的一个元素,有换行符
filepath="D:/codeZM/AutoDemo/untitled/fileTmp/note.txt"
with open(filepath) as file1:
print(file1.readlines())
with open(filepath) as file1:
for one in file1.readlines():
print(one)
(4)read().splitlines()读取返回列表,每行是列表中的一个元素,但没有换行符
filepath="D:/codeZM/AutoDemo/untitled/fileTmp/note.txt"
with open(filepath) as file1:
print(file1.read().splitlines())
绝对路径和相对路径
8.2文件的写入
在这里插入代码片