0003-20180422-自动化第三章-python基础学习笔记

时间:2023-03-09 03:01:56
0003-20180422-自动化第三章-python基础学习笔记

3章

内容回顾:
1. 计算机组成
2. 程序编译器
3. 变量
4. 条件
5. 循环
6. py2与py3区别
- 默认编码,
- 除法,
- input ,raw_input
7. 位,字节关系
8. 运算符:
- and or
- in not
- py2 除法特殊代码
- += -=
9. 编码
汉字在utf-8里位3个字节,24位;汉字在GBK里是两个字节,16位
ascii --> unicode(4个字节,32位表示) ->(优化) utf-8/utf-16/utf-32
10. 字符串格式化
tpl = "asdfa&s,asdf%d" %("二哥", 666,)
问题:
tpl = "我是%s",年龄%d,学习进度100%%" %('张勤学',99)

今日内容:
- 数据类型
- 整数(int类) v = 1 ----擅长计算
- v = 1
- v.bit_length()
- 布尔值(bool类) v = True -----擅长真或假
- 0 "" 为False,其他为True
- v = 2 or 1 ----V的值是2
- 字符串(str类) 引号引起来 "1" v = "1"
- 类提供的功能:
- 变大、小写
- 去除空白
- 替换
- 分割(分割后是列表类型)
- 首字母大写
PS:字符串本身不变化
- 公共功能:
- 长度
- 索引(只能取值)
- for循环
"张勤学,二个,成绩,XXX,信息,"
[“郑勤学,“二个”]
- 列表(list类) v = ["XX",“OO”, "666"] #---存取多个值比较方便
- 类提供功能:
- 追加
- 插入
PS:列表本身发生变化
- 公共功能:
- 长度
- 索引(取值,修改,删除) 特殊的:v[0:2] = ["asdf",]
- for循环
v[2]
v[1] = "孙骑兵"
- 元组(tuple类) v = ("XX",“OO”, "666") #PS:----元素不可以被修改
- 类提供功能:
- 无
- 公共功能:
- 长度
- for循环
- 索引(只能取值)
- 字典(dict类)-----无序的 v = {"name":"张勤学","age":18}
- 类提供的功能:
- get
- 公共功能:
- 长度
- 索引(取值,删除,修改)
- for循环
- for a in v.keys()
- for a in v.values()
- for a,b in v.items()

v = "郑勤学,18" #-----字符串表示姓名年龄
v = ["郑勤学",18] #-----列表表示姓名年龄
v = {
"name":"张勤学",
"age":18
} #-----字典表示姓名年龄
v['name'] #指名字
v['age'] #指年龄

===> 相同类的值(指定类的对象)具有相同的功能,功能保存在类中(只有一份)

今日作业:
内容整理

=============================================脚本=======================================

字符串类中的功能脚本:

 ###############################str类中为当前对象提供的功能#########################
#str
# v1 = "alEx" #1. 变大写
# value = v1.upper()
# print(v1,value) #2,.变小写
# value = v1.lower()
# print(v1.value) #3. 首字母变大写
# value = v1.capitalize()
# print(v1,value) #4. 去除收尾空格
# v1 = " asdfasdf "
# print(v1) # v1 = " asdfasdf "
# value = v1.strip()
# print(v1,value) """
name = input("请输入用户名:")
if name == 'alex':
print('登录成功')
""" """
name = input("请输入用户名:")
value = name.strip()
if value == 'alex':
print('登录成功')
""" """
#去除左边空格 -----去除指定空格-----左边或右边 name = input("请输入用户名:")
value = name.lstrip()
if value == 'alex':
print('登录成功') """ """
去除右边空格
name = input("请输入用户名:")
value = name.rstrip()
if value == 'alex':
print('登录成功')
""" #7. 替换
"""
v1 = "ASCII第一次以规范标准的型态发表是在1967年标准,最后一次更新则标准是在1986年,至今为标准止共定义了128个字符,其中33个字符无法显示" # value = v1.replace("标准", "**")
# print(value) #只替换第1个标准,后面的不替换
value = v1.replace("标准", "**",1)
data = value.replace('第一次','#')
print(data)
""" #8. 分割:
"""
v1 = "ASCII第一次以规范标准的型态发"
value = v1.split('第一次') #分割之后是列表类型
print(value)
"""
"""
v1 = "ASCII第一次以规范标准的型态发以规范标准的型态以规范标准的型态"
value = v1.split('标准') #分割之后是列表类型
print(value)
""" """
v1 = "ASCII第一次以规范标准的型态发以规范标准的型态以规范标准的型态"
value = v1.split('标准',2) #分割之后是列表类型
print(value)
""" #9. 判断当前字符串中是否全部都为数字
"""
v = "abc123fsdf"
for item in v:
print(item) #item = "a", item = "b"
""" """
v = "123"
val = v.isdecimal()
print(val)
""" """
v = "a123"
val = v.isdecimal()
print(val)
""" #统计字符串中有多少个数字?-------"abc01234fsdf"
"""
count = 0
v = "abc01234fsdf"
for item in v:
if item.isdecimal():
print(item)
count += 1
print(count)
""" #重点重点重点:原值不变 ###################公共功能############### # 1.计算当前字符串长度 """
v = "徐芳名sdf"
value = len(v)
print(value) """ """
name = input(">>>")
value = len(name)
print(value)
""" #取首字符或第几个字符
#2. 根据“索引” “下标”
# - 单个值:v[0]
# - 多个值:v[起始位置:结束位置]
# - 多个值: v[起始位置:结束位置:步长]
# PS: -1 表示最后 # 取第一个字符-----取单个字符
# v = "ASCII第一次以规范标准的型态发"
# value = v [0]
# print(value) #取倒数第3个字符
# v = "ASCII第一次以规范标准的型态发"
# value = v [-3]
# print(value) #动态计算取最后一个字符
# v = "ASCII第一次以规范标准的型态发"
# le = len(v) - 1
#-1表示最后一个字符
# value = v [le]
# print(value) #取一部分字符,取从0到第几个之前的字符------连续字符
# v = "ASCII第一次以规范标准的型态发"
# value = v [0:5] # 0 1 2 3 4
# print(value) #取某两个之间的字符
# v = "ASCII第一次以规范标准的型态发"
# value = v [4:5]
# print(value) #取从第几个开始到结尾的字符
# v = "ASCII第一次以规范标准的型态发"
# value = v [4:]
# print(value) # #取从第几个开始到最后一个之间的字符
# v = "ASCII第一次以规范标准的型态发"
# value = v [4:-1]
# print(value) #取从第几个开始到第几个之间的字符,中括号中第3个数字表示步长,表示每隔几取一个
# v = "ASCII第一次以规范标准的型态发"
# value = v [1:15:3]
# print(value) #题 : v = "ASCII第一次以规范标准的型态发" 连续将每个字符大印出来
"""
v = "ASCII第一次以规范标准的型态发"
length = len(v)
index = 0
while True:
data = v[index]
print(data)
index += 1
if index == length:
break
print(data)
""" """
v = "ASCII第一次以规范标准的型态发"
length = len(v)
index = 0
while index < length:
data = v[index]
print(data)
index += 1
""" #3. 循环
# 将对象中每个元素,分别循环显示出来
"""
v = "ASCII第一次以规范标准的型态发"
for item in v:
print(item)
"""

上节回顾字符串格式化脚本:

 # tpl = "我是%s,年龄%d,学习进度100%" %('张勤学',99)
# print(tpl) #占位符只有格式化时才有意义
# tpl = "我是%s,年龄%d,学习进度100%"
# print(tpl) # tpl = "我是%s,年龄%d,学习进度100" %('张勤学',99)
# print(tpl) #如果想要%,需要写两个%
tpl = "我是%s,年龄%d,学习进度100%%" %('张勤学',99)
print(tpl)

int整数类脚本:

 #int
# v1 = 1
# v2 = 23 #前戏
# 十进制 0 1 2...9
#八进制 0 1 2 ..7 10
#二进制 0 1 10 11 100 # v = 11 在计算机里是怎么存的?
# ascii 00110001 00110001 # v1 = 11
# data = v1.bit_length()
# print(data)
#本质上的内部存储:00110001 00110001
# 11 -> #二进制 八进制 十进制 十六进制
# 0 0 0 0
# 1 1 1 1
# 10 2 2 2
# 11 3 3 3
# 100 4 4 4
# 101 6 6 6
# 111 7 7 7
# 1000 10 7 8
# 1001 11 9 9
# 1010 12 10 A
# 1011 13 11 B
# 1100 14 12 C
# 1101 15 13 D
# 1110 16 14 E
# 1111 17 15 F
# 10000 20 16 10 ########################################1个需要注意
v1 = 16
#当前十进制用二进制表示时,最少使用的位数
data = v1.bit_length()
print(data) #str
v1 = "alex" # new_v1 = v1.upper()
# print(v1)
# print(new_v1) # new_v1 = v1.capitalize()
# print(v1)
# print(new_v1)

布尔类脚本:

 v1 = True   #
v2 = False #

整数、布尔值、字符串之间转换脚本:

 #int 8 9
#bool True False
#str "sdf" "7" ----只有字符串可以循环取值 #加法计算器
# v1 = input("请输入第一个值:")
# v2 = input("请输入第二个值:")
# v3 = int(v1) + int(v2) # 通过int将字符串转换为整数
# print(v3) #字符串--> 整数 # v = True
# val = int(v)
# print(val) # v = False
# val = int(v)
# print(val) #布尔值-->整数 int(值)
#整数,布尔值----> 字符串 str(值)
# 整数,字符串 ----布尔 bool(值)
# - 0 False ,其他都为True
# - 字符串和空格都为True,只有不填时才为False # v = 8
# val = str(v)
# print(val,type(val)) # v = True
# val = str(v)
# print(val,type(val)) # v = -1
# val = bool(v)
# print(val,type(val)) # v = 0
# val = bool(v)
# print(val,type(val)) # v = "abdcd"
# val = bool(v)
# print(val,type(val)) # v = " "
# val = bool(v)
# print(val,type(val)) # v = ""
# val = bool(v)
# print(val,type(val)) # 面试题:
# a = 1 == 1 or 2 > 3
# print(a)
#True # a = True or 2 > 3
# print(a)
#True # a = False or 2 > 3
# print(a)
#False # a = 0 or 2 > 3
# print(a)
#False # a = 9 or 2 > 3
# print(a)
# # a = "asdf" or 2 > 3
# print(a)
# asdf #总结:
# - 互相转换原则 类(值)
# -布尔值:只有0 ""为False
# -a = 9 or 2 > 3 # a = 0 or 6
# print(a)
#

列表类功能相关脚本:

 ####################list类中为当前对象提供的功能#####################

 """
v = [11,22,33,44,"蒋毅"] #1. 在列表尾部追加一个值-----修改了本身的值
v.append('李俊义')
print(v)
""" """
v = []
while True:
name = input("请输入用户名:")
if name == 'q':
break
v.append(name)
print(v)
""" """
v = []
while True:
name = input("请输入用户名:")
if name == 'q' or name == "Q":
break
v.append(name)
print(v)
""" """
v = []
while True:
name = input("请输入用户名:")
if name.lower() == 'q':
break
v.append(name)
print(v) """ """
#2.在列表中间指定位置插入数据----insert
v = [11,22,33,44,"蒋毅"]
v.insert(4,"孙骑兵")
print(v)
"""
#3. 反转
"""
v = [11,22,33,44]
#print(v)
v.reverse()
print(v)
""" #####################公共功能######################
#1.通过索引取值----和字符串相同
# - v[0]
# - v[0:4]
# - v[0:4:2]
#2.计算长度
#2.5 替换或修改
# 替换:
"""
v = ["张勤学","成大井","成绩","刘龙华"]
v[3] = "吴国胜"
print(v)
""" """
#删除:
v = ["张勤学","成大井","成绩","刘龙华"]
del v[3]
print(v)
""" """
v = ["张勤学","成大井","成绩","刘龙华","ALEX"]
del v[3]
del v[2]
print(v)
"""
"""
v = ["张勤学","成大井","成绩","刘龙华","ALEX"]
del v[2:4]
print(v)
""" """
v = ["张勤学","成大井","成绩","刘龙华","ALEX"]
v[2:4] = "吴国胜"
print(v)
"""
"""
v = ["张勤学","成大井","成绩","刘龙华","ALEX"]
v[2:4] = ["吴国胜"]
print(v)
"""
"""
v = ["张勤学","成大井","成绩","刘龙华","ALEX"]
v[2:4] = ["吴国胜","狗胜","牛胜"]
print(v)
""" #3.for循环 """
v = [11,22,33,44,"蒋毅"]
print(v[3]) v = [11,22,33,44,"蒋毅"]
val1 = v [3]
val2 = v [4] val1.bit_length()
val2.split("蒋")
""" """
v = [11,22,33,44,"蒋毅"]
val = v[0:5:2]
print(val) """ """
v = [11,22,33,44,"蒋毅"]
val = len(v)
print(val)
"""
"""
v = [11,22,33,44,"蒋毅"]
for i in v:
print(i)
""" #练习:
"""
v = ["123","孙骑兵",666]
# val = len(v)
# print(val)
val = v[1][1]
print(val)
print(v[1])
"""
"""
#将孙奇兵和666替换为王猛
v = ["123","孙骑兵",666]
v[1:3] = ["王猛",]
print(v)
"""
"""
#尾部添加王皓林
v = ["123","孙骑兵",666]
v.append('王皓林')
print(v)
""" #补充:
#1.列表中元素可以是:数字,字符串,布尔值,另外一个列表
"""
li = [11,22,[6,5,7],33,True,"蒋毅",55]
v = len(li)
print(v)
val = li[2]
print(val)
"""
"""
li = [11,22,[6,"88991"],33,True,"蒋毅",55]
val = li[2][1][-2]
print(val)
""" """
#将33换成66
li = [11,22,[6,"88991"],33,True,"蒋毅",55]
li[3] = 66
print(li)
"""
#将7换成77
"""
li = [11,22,[6,"88991",7],33,True,"蒋毅",55]
li[2][2] = 77
print(li) """
#将88991换成666
"""
li = [11,22,[6,"88991",7],33,True,"蒋毅",55]
li[2][1] = 666
print(li)
""" #字符串中数据替换
"""
v = "蒋毅"
v = v.replace('蒋','江')
print(v)
""" #将"蒋毅"中的蒋替换为江
"""
li = [11,22,[6,"88991",7],33,True,"蒋毅",55]
val = li[5].replace('蒋','江')
li[5] = val
print(li)
"""
#简写
"""
li = [11,22,[6,"88991",7],33,True,"蒋毅",55]
li[5] = li[5].replace('蒋','江')
print(li)
"""

元组类相关脚本:

 #tuple

 #v = (11,'ffff',22,33,44,)

 ###########tuple 类中为当前对象提供的功能###########
#无 ##########公共功能############
#1. 长度 """
v = (11,'ffff',22,33,44,)
val = len(v)
print(val)
"""
#索引取值
"""
v = (11,'ffff',22,33,44,)
print(v[0])
print(v[1])
"""
#3.for循环
"""
v = (11,'ffff',22,33,44,)
for i in v:
print(i)
""" #4. 元组也可以嵌套
"""
v = (11,'ffff',22,['蒋毅','二井"'],33,(9,1,2,"alex"),44,)
print(v)
"""
"""
v = (11,'ffff',22,['蒋毅','二井"'],33,(9,1,2,"alex"),44,)
v[3][1] = "XXXXX"
print(v)
""" #元组的儿子不能替换修改,但元组的孙子可以替换或修改添加
v = (11,'ffff',22,['蒋毅','二井"'],33,(9,1,2,"alex"),44,)
v[3].append("asdasd")
print(v)

字典类功能相关脚本:

 #####################dict类中为当前对象提供的功能##############

 """
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} val = v.get('k1')
print(val)
#------取k对应的value值
""" """
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} val = v.keys()
print(val)
#------取k的值
""" """
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} val = v.values()
print(val)
#-----取value值
""" """
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} val = v.items()
print(val)
#-----同时取k和的值
""" ##########v.keys() v.values() v.items() 一般不单独使用,而是和for循环一起使用 # 当根据k获取对应的值不存在时,k不存在默认取值为none
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} val = v.get('k1ffff')
print(val)
""" # 当k值不存在时后面指定什么值,key就为什么值
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} val = v.get('k1ffff','9999')
print(val)
""" ###################公共功能###############
#1.获取字典的长度(键值的个数)
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
val = len(v)
print(val)
"""
#2.索引
#不推荐(当k不存在时程序报错),推荐使用get取值
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
val = v['k1']
print(val) """ """
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
val = v.get('k1')
print(val)
""" #对字典进行设置值,如果k存在对应的值,则更新值;如果k不存在,则创建键值对
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
#v['k1'] = 666
v['kkk1'] = 666
val = v.items()
print(val)
""" #字典是无序的,所以不能对字典进行赋值 #del 删除键值对
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} del v['k1']
val = v.items()
print(val)
""" #3. for循环
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
for i in v:
print(i)
"""
#默认只列所有的k
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
for i in v.keys():
print(i)
""" #只取value
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
for i in v.values():
print(i)
""" #取完整键值对
#方法一
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
for i in v.keys():
print(i,v[i])
""" #分解
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
} val = v['k1']
print(val)
""" #方法二
"""
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
for k in v.items():
print(k)
#------取值形式为元组模式 """ """
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
for k in v.items():
print(k[0],k[1])
""" """
#更简洁的方法
v = {
"k1":'v1', # 键值对
"k2":'v2', # 键值对
}
for k,v in v.items():
print(k,v)
""" #4. 字典嵌套
"""
v = {
"k1":123,
"k2":"asdf",
"k3":True,
"k4":[11,22,33],
"k5":(1,2,3),
"k6":{
'kk1':'vv1',
'kk2':'vv2',
},
'k7':[1,2,(8,6,2),{"k111":'vvv1'},5]
}
val = v.items()
print(val) """ #-----删除其中一个键值对
"""
v = {
"k1":123,
"k2":"asdf",
"k3":True,
"k4":[11,22,33],
"k5":(1,2,3),
"k6":{
'kk1':'vv1',
'kk2':'vv2',
},
'k7':[1,2,(8,6,2),{"k111":'vvv1'},5]
} del v['k6']['kk2']
print(v)
""" #---替换掉k7里面的元组数据
"""
v = {
"k1":123,
"k2":"asdf",
"k3":True,
"k4":[11,22,33],
"k5":(1,2,3),
"k6":{
'kk1':'vv1',
'kk2':'vv2',
},
'k7':[1,2,(8,6,2),{"k111":'vvv1'},5]
}
v['k7'][2] = 666
print(v)
""" #------在k7的嵌套字典里添加一个k222,vvv2
"""
v = {
"k1":123,
"k2":"asdf",
"k3":True,
"k4":[11,22,33],
"k5":(1,2,3),
"k6":{
'kk1':'vv1',
'kk2':'vv2',
},
'k7':[1,2,(8,6,2),{"k111":'vvv1'},5]
}
v['k7'][3]['k222'] = 'vvv2'
print(v)
""" #列表中嵌套字典 """
user_list = [
{'name':'老狗','age':18},
{'name':'流量','age':66},
{'name':'wifi':'age':99},
]
"""
#练习:通过用户输入的姓名和年龄创建字典 """
user_list = [
{'name':'老狗','age':18},
{'name':'流量','age':66},
{'name':'wifi','age':99},
]
n = input("请输入姓名:")
a = input("请输入年龄:")
temp = {}
temp['name'] = n
temp['age'] = a
temp = {'name':n,'age':int(a)}
user_list.append(temp)
print(user_list)
"""
#或者下面的写法 """
user_list = [
{'name':'老狗','age':18},
{'name':'流量','age':66},
{'name':'wifi','age':99},
]
n = input("请输入姓名:")
a = input("请输入年龄:")
temp = {'name':n,'age':int(a)}
user_list.append(temp)
print(user_list)
""" #------改进版----使用for循环
"""
user_list = [
{'name':'老狗','age':18},
{'name':'流量','age':66},
{'name':'wifi','age':99},
]
n = input("请输入姓名:")
a = input("请输入年龄:")
temp = {'name':n,'age':int(a)}
user_list.append(temp)
for item in user_list:
print(item)
""" #----再次改进
"""
user_list = [
{'name':'老狗','age':18},
{'name':'流量','age':66},
{'name':'wifi','age':99},
]
n = input("请输入姓名:")
a = input("请输入年龄:")
temp = {'name':n,'age':int(a)}
user_list.append(temp)
for item in user_list:
print(item['name'],item['age'])
"""