周总结

目录

1.与用户交互 input
2.格式化输出 str
3.基本运算符
4.流程控制(while,for,if)
5.数据类型的内置方法(int,float,str,list,dict,set,tuple)
6.可变类型与不可变类型
7.队列与堆栈
8.数据类型总结
9.字符编码
10.python3和python2有区别的内容


一:与用户交互

1.1 输入

input #接受用户输入
# python3 和 python2 的区别:
python3中,用户输入任何值都存成字符串类型
python2中,用户输入什么类型,就存成什么类型
raw_input 和python3的 input 一样

1.2 输出

print #可以连续打印多个值 只要用逗号隔开就可以啦!

二:格式化输出

字符串的格式化输出

str 字符串的格式化输出: %s是一个占位符 按照顺序一一传值
1. %s 按位置传值 # info = 'my name is %S' %('rock')
2.%d 按位置传值,只能c数字 #info = 'my age is %d' %(25)
3..format
一:info = 'my name is %S' %('rock')
二:info = 'my name is {name}' %{'name':'rock'}
三:info = 'my name is {1}' %('rock','egon','tony')
# 第一种 按位置取值
# 第二种 按照key对应的value 取值
# 第三种 按照索引取值,可以反复使用

三:基本运算符

3.1赋值运算符

1. name = 'jason' #先看左边再看右边 也可用于新增字典,列表内

3.2 算数运算符

1.python对数字的精确度不是很高,一般借助第三方辅助,其他类型也可以使用局部的数学运算。如: print('hello' + 'world') # 字符串拼接
print('hello'*2) # 字符串复制
2.+ - * / //(整除) %(取余) **幂指数

3.3比较运算符

1.> < >= <= == != print(10 > 2) print(2 == 2)print(3 != 4)
# 补充 print('hello' > 'world')
字母内部对应着数字,A-Z 65-90, a-z 97-122

3.4逻辑运算符

1. and or not
与 and 链接多个条件,条件必须都成立
或 or 连接多个条件,一个成立就可以
非 not 取反
# 布尔值为False: 0 None '' [] {} (重要)
三者混用有优先级,使用()括号来明确优先级

3.5成员运算

1. in 判断在....里面 通常与 if 一起使用
2. not in 取反 和上面同样概念

3.6身份运算

1. == 判断值是不是相等的,内存地址不一定一样
2.is 判断内存地址是不是一样的,可以用(id) 查询
# 值相等,内存地址不一定一样!!!
#内存地址一样,值一定一样!!!

3.7赋值运算

3.71链式赋值

1. x = y = z = 10

3.72交叉赋值

交叉赋值公式不需要中间变量实现互相交换,内存地址没有更改

x , y = y , x

3.73解压赋值

name1, name2, name3, name4 = name_list # 按照位置一一对应赋值

前后数量必须相等
l = [11, 22, 33, 44] a, b, *_ = l
# _ 可以打破个数相等的规则,_ 可以接受后面所有不需要的数据

3.74 增量赋值

1. x=x+1 x += 1 #相当于简写,很多运算符都可以使用

四:流程控制

4.1 if 判断

1.if 判断条件是否成立 如果成立,执行代码,如不成立》》:
2.elif 判断if另外的条件,如果成立,执行代码,如不成立》》》:
3.else if 和 elif都不成立会执行 else 代码
#总结: if代码成立,elif和else不执行,if不成立,elif开始执行,else不执行,elif代码条件不成立,执行else子代码后结束。

if嵌套
if判断下还可以继续执行if嵌套,如下:

if gender'female' and age<30 and height > 165 and is_beautiful:
print('小姐姐加个微信')
if is_success:
print('可以一起看电影嘛')
if anser
'ok':
print('kaixin')
else:
print('shiwang')
else:
print('baybay')

4.2 while 循环

1.while 循环 在条件成立的前提下,继续运行子代码,子代码运行结束后继续判断条件是否成立,成立的话就继续循环,不成立结束。

如下例题:
while True:
name = input('请输入账号:')
pwd = input('请输入密码:')
if name == 'rock' and pwd == '345':
print('登陆成功')
while True:
cmd = input('你的命令:')
if cmd == 'exit':
break
else:
continue
break
else:
print('账号密码错误')

4.2.1 while 循环组合

1.while 符合条件可以无限循环
2.while + break #结束本层循环,手动停止while循环
3.while + continue #结束本次循环,从新开始循环
4.while + else #在while没有被主动打断的前提下,运行else 至结束
5.while 嵌套 就是在 while 循环下子代码还有 while 循环代码

4.3 for 循环

1#for循环和while循环基本类似,但是for更简单快捷
for + 变量名(i,j,item)+ in + 可迭代对象 #可以是 字符串,列表,字典等

namelist=[1,2,3,4,5,6,6]
for i in namelist: 依次提取列表中内容使用

for + range (起始位置,终止位置) 顾头不顾尾,可以产生多个元素的列表
如:for i in range(0,10) 表示赋值给i,打印 i = 0 1 2 3 4 5 6 7 8 9

range 在python中的区别:
# 在python3中,为了节省内存,需要值的时候才给你,不需要就不给
# 在python2中,直接生成一个列表,浪费内存
# xrange 等价于python3中的range()

4.3.1 for 循环组合

1. for +break # 结束本层循环
2. for + continue # 结束本次循环
3. for + else for #循环没有主动结束的前提下,运行至else至结束
4.for 嵌套:就是在 for 循环下的子代码,还有 for 循环代码

4.4 流程控制结构

1.顺序结构 正常从上向下按照顺序的机构
2.分支结构 有分支子代码,如: if判断子代码, while循环子代码等
3.循环结构 while 循环 , for 循环
4. # 代码缩进
在python中代码缩进代表从属关系,一般是四个空格,同属关系缩进保持一致
''' ps: 遇到冒号,必缩进 '''

五:数据类型的内置方法

5.1整型 int

1. int ()将括号内的数据转换成整型 #必须是纯数字
number = int('20')

5.1.1 进制转换

print(bin(100)) # 将十进制的100转换成二进制对应的数 0b1100100

print(oct(100)) # 将十进制的100转换成八进制对应的数 0o144

print(hex(100)) # 将十进制的100转换成十六进制对应的数 0x64

"""
0b开头表示二进制数
0o开头表示八进制数
0x开头表示十六进制数
"""
# print(int('0b1100100',2)) # 100
# print(int('0o144',8)) # 100
# print(int('0x64',16)) # 100

5.2浮点型 float

1.float ()将括号内数据转换成浮点类型,转换数据只能是纯数字和小数点数字
number = float (1.5,20)

5.3字符串 str

1. str () # 将括号内数据转换成字符串类型,可以转换任意类型
# 优先掌握的操作:
2. 按照索引取值: 正向取值, 反向取值,只能取值。
[0]从左往右取值,[-1]从右往左取值

3.切片取值: 顾头不顾尾 [0:8:3] (起始位置:终止位置:步长)
print(name1[0:10:1]) # 从0开始,走到9,步长为1 支持负数(反向)-1

4. format 取值:
{} #按位置取值
{索引} #按索引取值
{name} #按照key取值
如:res='{} {} {}'.format('egon',18,'male')

5. # .count 统计某个字符出现的次数,也可以当作value使用

6. len() # 统计字符串内字符个数 空格也算。

7. # .strip() 移除首尾指定的字符
strip() 移除首尾指定字符 #不指定默认空格
lstrip() 移除左边指定字符 #不指定默认空格
rstrip() 移除右边指定字符 #不指定默认空格

8. # .split 按照指定的字符切割成字符串,输出为列表类型

split() 切割指定字符串,指定字符消失,输出为列表类型,可以控制切割次数
rsplit()同上,从右开始切割。
如:name.rsplit('-',2) ['jason-tony', 'egon', 'rock']

14. # .join() 将列表多个元素拼接成字符串
如: res = ['jason','egon','kevin','tony']
print('-'.join(res)) 'jason-egon-kevin-tony'

9. # .upper , .lower , .isupper , .islower
upper() 全部改为大写
lower() 全部改为小写
isupper() 判断是否全为大写
islower() 判断是否全为小写

10. # .replace 字符串的替换
replace('name','age',2)
0索引为需要被替换的, 1 索引 为替换成为的, 2 索引为替换次数

11. # .isdigit() 判断字符串是否为纯数字, 可以限制输入格式

12. # title() 将字符串首字母全部改为大写

13. # .starwith() .endswith()
.starwith() 判断是以..开头
.endswith() 判断是以..结尾

5.4 列表 list

1. 类型转换 list
list() #能被for循环的类型都能转换成 list 类型 str,list,dict
list 1 = list(dic) 字典只有key能被转换
2. # 索引取值:
list [6][1]
3. # 切片取值:
list [0:6:2] 索引默认 0 开始,也可以指定位数,设置步长

4. len () # 统计列表中元素的个数

5. # .append() 末尾追加单个元素
res.append('rock') 先增加,再打印,合为一步会报错

6. # .insert() 根据索引增加元素
res.insert(0,'alex') 前为索引,后为增加元素

7. # extend() 扩展列表
将两个列表和为一个列表,等同于:append+for循环

8. del # 按照索引删除 无返回值
del [2] 删除 2 号索引的元素
9. # .remove() 指名道姓删除 无返回值
res.remove('rock')
10. # .pop() 默认尾部弹出元素,也可以再括号内+索引弹出 有返回值
res.pop(2) list=res.pop(2) 拿到返回值

11. # .clear() 清空列表
list []

12. # .sort() .revers() 排序
升序 降序

13. # .count() 统计列表中某个元素出现的次数
l1.count('rock')

5.5 字典 dict

定义:大括号括起来,内部存放多个元素,表现形式为 key :value 键值对形式 key是对value描述性信息,一般都是字符串,key只能是不可变类型(int,float,str) value 可以是任意类型

1. dict () 类型转换 dict 可以转换任意类型
dic = dict(list)

2.# 取值的两种方法 :
dic.get('name') and dic['name']
# 推荐使用 取值不推荐使用,不存在会报错

3.# 添加元素
d['name']='tony' d['age'] = 18
内部有相同的key更新value,不存在key就新增键值对

4. # 指定取值:.keys() .values() .items()
.keys() 取字典内所有key值
.values() 取字典内所有value值
.items() 取字典内所有key:value键值对

5. 删除:
del ['name'] 指定删除
d.pop('name') 指定删除,有返回值
d.popitem() 随机删除一个键值对,有返回值,返回值为tuple类型
一般默认删除最后一个
6. # .setdefault() 可以理解为有key获取value值,无key新增键值对
key值存在不修改,获取key对应的value值
key值不存在,新建键值对('name',None) 可以设置为空

7. # 创建字典的三种方式:
第一: dict({})
第二: dict (name = 'jason', age = 18)
第三: dict([['name','jason']['pwd',123]['hobbied','read']])
(1) d={}
for k,v in l:
d[k] = v
print(d)

(2) res = dict(l)
print(res)

5.6 元组 tuple

元组定义: 元组 tuple 是不可变类型
小括号括起来,内部存放多个元素,元素之间逗号隔开,元素可以是任意类型
# 元组类型只有单个元素时,需要+逗号
设置元组 tuple 类型
tuple 1 = tuple( list )

5.7 集合 set

集合定义: 集合 set 类型
大括号括起来,内存可以存放多个元素,内部只能是不可变类型
如: # int float str
# 作用: 1.去重 2.关系运算
'''
集合内元素会自动去重,集合内元素为无序状态,关系运算就是比较两个群体之间的差异
'''
& 计算两个集合内重复的数据
| 计算两个集合内所有的数据,重复只取一个
- 计算两个集合的差异
^ 计算两个集合不产生重叠的

六:可变类型与不可变类型

6.1可变类型

列表 list , 字典 dict

值改变,内存地址不变

6.2 不可变类型

数字 int 字符串 str 元组 tuple

值改变,内存地址一定变

七:队列与堆栈

1.队列
# 队列 先进先出
2.堆栈
# 堆栈 先进后出

八:数据类型总结

8.1 按存值个数区分

标量/原子类型: 数字,字符串

容器类型: 列表,元组,字典

8.2 按可变不可变区分

可变类型: 列表,字典

不可变类型: 数字,字符串,元组

8.3 按访问顺序区分

直接访问: 数字

顺序访问(序列类型): 字符串,列表,元组

key值访问(映射类型): 字典

8.4 按存储空间占用区分

数字

字符串

集合:无序,即无序存索引相关信息

元组:有序,需要存索引相关信息,不可变

列表:有序,需要存索引相关信息,可变,需要处理数据的增删改

字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改

九:字符编码

简介

字符编码表

规定了人类的字符与数字之间的对应关系 # 字符编码的研究仅限于文本文件

计算机基于电工作 而电信号只有高低电频两种状态
# 高电频人为的定义为 1 低电频人为的定义为 0

单位换算

比特位bit(二进制的个数)
8bit = 1bytes (字节)
1024bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB= 1TB
1024TB = 1PB

字符编码发展史

一家独大,计算机由美国人发明的 美国人需要计算机能够识别英文
# ASCII码(字符编码表) 美国发明
1bytes来表示所有的英文及符号
8bit 256
# 所有的英文字母及符号加起来也不会超过128种可能

中国发明了GBK码

2bytes表示中文及符号 16bit 65535
1bytes表示所有英文及符号 #生僻字用更多bytes来表示

日本发明了shift_JIS码

韩国发明了Euc_kr码

天下一统 # unicode w 兼容万国字符
所有字符统一使用2bytes表示 不够再增加

UTF-8 unicode transformation format

英文还是要哦那个1butes 中文改用 3bytes
内存使用的编码表示unicode 硬盘用的是utf8

以后只用utf8编辑文本文件

字符编码实操

1.解决文件乱码的核心
# 文件以什么编码存的,就用什么编码取
2.编码与解码(重要)
#编码: encode()
将人类的字符按照指定的编码转换成计算机能够识别的数据类型
#解码 decode()
将计算机能识别的数据按照指定的编码转换成人类能够读懂的字符

3.python解释器默认编码
#python2默认的是ASCII码
在python2种定义字符串在前面加一个字母 u
文件头指定编码: conding:utf8 name= u'jason'
#python 3 默认的是utf-8

文件操作

操作系统
windows mac linux
双击文件
硬盘转 磁头读取数据
保存文件
硬盘转 磁头写入数据

我们在操作文件的时候其实操作的是硬盘
'''文件其实是操作系统暴露给我们可以简单快捷的操作硬盘的接口'''

绝对路径和相对路径

绝对路径:非常详细的路径描述 , 无论什么人什么位置都可以找到
相对路径:由一个参考 只有对应的人才可以找到

在python上打开文本:
res = open(r'a.txt','r',encoding='utf8') #打开方式
print(res.read()) #屏幕上显示
res.close() # 需要最后close关闭此文件

打开a.txt 使用变量名f指代改文件

with open(r'a.txt','r',encoding='utf8') as f:

print(f.read()) # 读取文件内容

with子代码运行结束之后会自动调用close关闭文件资源

"""

with open(文件路径,读写模式,编码格式) as 变量名:

子代码块

文件路径是必须的

读写模式和编码格式是可选的

"""

如果不指定读写模式 那么默认使用r

如果不指定编码格式 那么默认使用当前计算机内部默认编码

"""在中国所有的windows电脑内部默认的编码是gbk"""
with open(r'a.txt') as f:
print(f.read()) # 读取文件内容

取消转义

res = r'D:\day08\a.txt'

res1 = r'D:\day08\n.txt'

res2 = r'D:\day08\t.txt'

print(res,res1,res2

十:python 3 和 python 2 的所有区别

1.range 在python中的区别:
# 在python3中,为了节省内存,需要值的时候才给你,不需要就不给
# 在python2中,直接生成一个列表,浪费内存
# xrange 等价于python3中的range()

input #接受用户输入
# python3 和 python2 的区别:
python3中,用户输入任何值都存成字符串类型
python2中,用户输入什么类型,就存成什么类型
raw_input 和python3的 input 一样

3.python解释器默认编码
#python2默认的是ASCII码
在python2种定义字符串在前面加一个字母 u
文件头指定编码: conding:utf8 name= u'jason'
#python 3 默认的是utf-8

首先在python3中操作文件只有一种选择,那就是open()

而在python2中则有两种方式:file()与open()

posted @ 2021-06-22 22:10  郝怕怕  阅读(67)  评论(0)    收藏  举报