基本数据类型
- 列表 list 能够存储多个数据值 并且能狗获得整体或局部
- 用中括号括起来可以存放多个数据值 并且数据值之间用逗号隔开
- 索引取值:在IT领域数字的起始位置通常是从0开始 现实生活中是从1开始
- 字典dict:能够存储多个数据 并且能够方便的获取整体或者局部 并且数据具有对于解释 大括号括起来 内部可以存放多个数据 数据的组织形式是K:V键值对 K是对V的描述性性质的信息 一般是字符串 V是真实的数据值 可以是任意数据类型
- 字典取值:字典无法使用索引取值(因为字典是无序的) 可以使用按K取值
- 布尔值: bool 用来表示事物是否可行 是否正确 是否合理总共就两个值 is_right = True 真 可以 正确
is_delete = False 假 不可以 错误 布尔值看着很简单也很少见但在程序中最多的使用频率也是的最高的
程序中所有的数据类型都可以转成布尔值
布尔值为False的数据有
0 None 空字符串 空列表 空字典 ...
除上述之外所有的数据对于的布尔值都是True
tuple
- 能够存储多个数据 并且能够方便的获取整体或者局部与列表的区别在于元组内数据值不能"直接修改",而列表可以 所以元组有一个小外号>>>:不可变的列表
- 小括号括起来 内存可以存放多个数据值 数据值与数据值之间逗号隔开 数据值可以是任意数据类型 t1 = (111, 222, 333)
set
z自动去除重负的数据
判断两个集合之间数据的关系(共同好友 共同点赞)
s1 = {1, 2, 3, 4, 5}
与用户交互
- 输入:
用input()获取用户输入的指令
input获取到的用户输入都会转成字符串类型
- 输出: 用input()向外界输出的信息 括号内可以直接放数据值 也可以放名字 也可以一次性打印多个值 换行符:\n \r \r\n 最早起的换行是 \r\n 后面简化成了 \n \r(不同的操作系统可能会有变化)
格式化输出
在python中如果想要占位 需要使用占位符 %s: 支持所有数据类型替换 %d: 只支持给数字占位 产生固定位数的数据(总共8位 不够则使用0填充) print('%08d' % 123) 00000123
基本运算符
- ** // % == != '''偷懒用法''' x = x + 1 # x += 1 x = x - 1 # x -= 1
多种赋值操作
1.链式赋值:x = y = z = 18
2.交叉赋值:m, n = n, m
3.解压赋值:a, b, c = [11, 22, 33] # 遵循左右两边个数一致
a, *args = [1, 2, 3, 4, 5] # 不遵循
逻辑运算符
and
or
not
1.用于连接多个条件的结构判断
2.and连接的多个条件必须全部成立结果才成立
3.or连接的多个条件只要有一个成立结果就成立
4.not将后面的结果取反 得出的肯定是个布尔值
5.三者混用有优先级之分但是我们应该提前通过括号划定优先级
成员运算符
in
not in
判断某个个体在不在某个群体内
1.针对列表的成员运算 最小单位是单个数据值不能再细化
2.针对字符串的成员运算 最小单位可以细化到单个字符
3.针对字典的成员运算 最下单位是字典的K
身份运算符
== 仅仅用来判断数据值是否相等
is 用来判断数据值对应的内存地址是否相等
python内存优化机制>>>:小整数池
流程控制理论
用于控制代码的执行流程 三种结构
1.顺序结构
2.分支结构
3.循环结构
分支结构
分支结构
1.单if分支:条件成立之后执行的子代码
2.if...else分支
if:条件成立之后执行的子代码
else:条件不成立之后执行的子代码
3.if...elif...else分支
if:条件1成立之后执行的子代码
elif:条件1不成立条件2成立之后执行的子代码
else:上述条件都不成立执行的子代码
4.if的嵌套分支:写嵌套前期可以稍微慢一些 配合流程图反向编写
逻辑运算符补充知识
连接多个条件之后的结果具体是布尔值还是没有转换之前的数据值
多个条件如果都是具体的数据值 那么结果肯定是某个数据值
多个条件如果都是需要转换的表达式 那么结果肯定是布尔值
多个条件既有数据值又有表达式 则需要区别对待(and or)
循环结构的while基本语法
-
1while 在条件成立执行的循环体代码
-
while+break:条件成立执行的循环体代码 break 结束break所在的那一层循环
-
while+continue:条件成立执行的循环体代码 continue 结束本次循环直接开始下一次循环
-
while+else: while 条件:条件成立执行的循环体代码
else:循环体没有被强制结束的情况下 走完循环体代码就会执行该子代码
while循环嵌套
while 条件:条件成立执行的循环体代码
while 条件:条件成立执行的循环体代码
死循环与全局标志位
1.死循环循环体代码不能是连续的计算任务(没有停顿)
2.全局标志位是为了节省break的编写
循环结构之for基本语法
for 变量名 in 可迭代对象:可以使用字符串 列表 字典 元组 集合 能够自动结束循环(当被取值的数据里面没有数据值可取)
1.循环字符串是挨个取出一个个字符 2.循环列表是挨个取出一个个数据值 3.循环字典是挨个取出一个个K值
range多种用法
range(10) 等价于 range(0,10,1)
range(1,10) 等价于 range(1,10,1)
range(1,10,2) 等价于 range(1,10,2)
for结合其他关键字
for + break
for + continue
for + else 和while使用是一样只是FOR用起来比较方便更加便捷
数据类型的内置方法简介
- 内置方法:相当于每个人身上自带的功能 1整型2浮点型3列表型4字典型5字符型6布尔值7元组8集合 在使用数据类型的内置方法统一使用句点符 数据类型.方法名()
- 我们需要借助于编辑器的自动提示来查看某个数据类型的内置方法,在学习的过程中还会运用到其他的一些方法。
整型相关方法
- 用int表示 也就是整数形式 用于计算没有内置方法 int(待转换的数据) print(bin(100)) # bin() 将十进制转二进制 0b1100100 0b是二进制数的标识 print(oct(100)) # oct() 将十进制转八进制 0o144 0o是八进制数的标识
print(hex(100)) # hex() 将十进制转十六进制 0x64 0x是十六进制数的标识
如果数字前面没有任何标识 默认就是十进制其他进制转十进制
自动识别进制数
print(int(0b1100100)) 100
print(int(0o144)) 100
print(int(0x64)) 100
人为指定进制数
print(int('0b1100100', 2)) 100
print(int('0o144', 8)) 100
print(int('0x64', 16)) 100
浮点型相关方法
- float 是一种浮点数据类型 它可以识别一个小数点 但是多个小数点的时候是不可以的 print(float('123.12')) 可以识别一个小数点 print(float('123.123.1.2.2.2.2.2.2')) 不可以 针对布尔值的特殊情况
print(float(True)) 1.0
print(float(False)) 0.0
print(int(True)) 1
print(int(False)) 0
字符串相关方法
- str:兼容所有的数据值
print(str(123), type(str(123)))
print(str(123.11), type(str(123.11)))
print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
print(str({'name': 'yqb'}), type(str({'name': 'yqb'})))
print(str(True), type(str(True)))
print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
- 不需要死记硬背 只需要掌握几个常见的就行等后续遇到新的直接代码执行即可 1:索引取值:提取单个字符 并且支持负数 2:切片取值:多个字符同时也支持负数默认顺序从左到右 3:间隔/方向 print(s1[:]) # 所有
print(s1[::2]) # 针对整个字符串 隔一个取一个
print(s1[0:5:1]) # hello 默认1可以不写
print(s1[0:5:2]) # hlo 4:统计字符串中字符的个数 print(len(s1)) print(len('hello jason!')) 12 空格也算字符 5:移除字符串首尾指导的字符 字符串调用内置方法 不是改变原数据 而是产生了新的数据 也可以进行左右消除 就是在strip前+l(left)或者+r(right) 6 按照指定的字符切割字符串 假如出现了连续的特征符号 就该使用切割 切割字符串后是一列表 可以从左到右进行切割 当需要切割次数时就可以使用maxsplit+次数即可 7字符串大小写相关 s2 = 'HeLLo Big BAby 666 你过的还好吗'
print(s2.lower()) # hello big baby 666 你过的还好吗
print(s2.upper()) # HELLO BIG BABY 666 你过的还好吗
print(s2.islower()) # 判断字符串中所有的字母是否是全小写 False
print(s2.isupper()) # 判断字符串中所有的字母是否是全大写 False
print('aaa'.islower()) # True
print('AAA'.isupper()) # True
code = 'JaSon666'
print('这是网页给你返回的随机验证码:%s' % code)
confirm_code = input('请输入验证码>>>:')
code_upper = code.upper() # 将网页返回的验证码转大写
confirm_code_upper = confirm_code.upper() # 将用户填写的验证码转大写
if code_upper == confirm_code_upper:转大写 或者小写 再做比对
if confirm_code.upper() == code.upper(): # 统一转大写 或者小写 再做比对
print('验证码正确')
else:
print('验证码错误') 可以使用upper和lower进行是否是全大写和全部小写来进行转换 如果在前面使用is+lower/upper则进行大小写的判断 8字符串的格式化输出 方式1 等价于%s占位 没有什么优势
res1 = 'my name is {} my age is {}'
print(res1.format('jason', 18))
方式2: 支持索引取值 并且支持重复使用
res2 = 'my name is {0} my age is {1} {0} {1} {1} {1}'
print(res2.format('jason', 18))
方式3: 支持关键字取值(按k取值) 并且支持重复使用
res3 = '{name} {name} {age} my name is {name} my age is {age}'
print(res3.format(name='jason', age=18))
方式4:推荐使用(******)
name = 'jason'
age = 18
print(f'my name is {name} my age is {age} {name} {age}')
总共有四种方式 与前三种方式进行对比第四种是最值得推荐使用的 但也不能将前三种忘记
9.统计字符串中指定字符出现的次数
9.统计字符串中指定字符出现的次数
res='sdashdjasdwjjkashdjasdjqwhasjdjahdjwqhdjkasdhwsdaadadadadad'
print(res.count('j'))
print(res.count('ad'))
使用count()更加的方便
10判断字符串的开头或者结尾
res = 'jason say ha ha ha heiheihei'
print(res.startswith('jason'))
print(res.startswith('j'))
print(res.startswith('b'))
print(res.endswith('heiheihei'))
print(res.endswith('hei'))
print(res.endswith('h'))
使用startswith和endswith进行判断开头或结尾的字母
11 字符串的替换
peplace(‘888’,‘999’)从左往右全部替换
peplace(‘888’,‘999’,1)从左往右替换指定个数 1不是准确数字可以是其他数字
12字符串的拼接
print(res1 + res2) 字符串支持加号拼接
print(res1 * 10) 字符串支持乘号重复
print(''.join(['hello', 'world', 'hahaha'])) join方法拼接
print('|'.join(['hello', 'world', 'hahaha'])) join方法拼接
print('$'.join(['jason', 'say', 666])) 列表中的数据都必须是字符串类型 不然就报错 13判断字符串中是否是纯数字 使用i上帝给后台()惊醒判断是否是纯数字 如果有字母和小数点都是不行 14查找某个字符对应的索引值 res = 'hello world jason'
print(res.index('d')) 10
print(res.find('d')) 10
index查找索引 如果没有则报错
print(res.index('d',0,5))
find查找索引 如果没有则返回-1
print(res.find('d',0,5)) -1
15.正文相关操作
使用title()则全部首字母变为大写
使用apitalize()则首字母变为大写的只有第一个词组
列表相关方法
list 能够被for循环的数据类型都可以转换成列表 print(type(list(...))) 1.索引取值 print(l1[0]) print(l1[-1]) 2.切片操作 print(l1[0:3]) print(l1[:]) print(l1[-4:-1]) 3.间隔/方向 print(l1[::2]) 统计列表中数据值的个数 print(len(l1)) 4