上周知识总结
目录
一、python基本数字类型
二、与用户交互
三、格式化输出
四、python运算符
五、多种赋值方式
六、垃圾回收机制
七、流程控制
八、数据类型的内置方法、相关操作
内容详解
一、python基本数字类型、type查看数据类型
- 整型
int,整数 - 浮点型
float,小数 - 字符串
- str,左侧是否含有赋值符号和变量名 有则为字符串 没有则为注释
- 四种方式:
name = 'Gaoli' # 英文单引号
name1 = "Gaoli" # 英文双引号
name2 = '''Gaoli''' # 英文单引号按三次
name3 = """Gaoli""" # 英文双引号按三次
- 列表
- list,可以存储多个数据值及类型、还可以非常方便的取
- name_list = ['Gaoli', 'Meili', 11, 11.11, [11, 22]]
英文中括号,可以存多个数据值,数据值之间逗号隔开,数据值可以是任何数据类型,索引取值'0'开始:l1 = [0]
- 字典
- dict,大括号'{}'、可以放多个数据,非常精确存储和表达数据的含义.
- info_dict = {
'name': 'Gaoli',
'age': '23',
} - 'k': 'v', # 按K取值,没有索引概念,字典是无序的。
- 布尔值
- bool,用来判断事物的对错、是否可行、用于流程控制中。
- 两种状态:True 对的、真的、可行的,False 错的、假的、不可行的
- python中所有数据自带布尔值。其中,0,None,'',[],{}#空的是False的数据,其他都是True数据。
- 布尔值变量一般使用is开头:is_delete = False\is_alive = True
- 元组
- tuple,“不可变”列表、元组内索引绑定的内存地址不能修改,小括号括起来、存放多个数据值、数据值之间逗号隔开。
- t1 = (11, 22, 'Gaoli')
t1 = (1,)
t2 = (11.11,)
t3 = ('Gaoli',)
元组内如果只有一个数据值,加上逗号。
- 集合
- set,“不可变”类型,用于去重和关系运算,{}大括号括起来、可以放多个数据值、数据值不是K:V键值
- s1 = {1, 2, 3, 4, 5 }
- {} 默认是空字典
set() 默认是空集合
二、与用户交互
1.获取用户输入
input
# 获取用户输入
username = input('请输入您的用户名>>>:')
"""
1.先执行input获取用户输入
2.将输入的数据绑定给变量名username
3.以后在程序中就可以使用变量名反复调用用户数据
"""
强调:input获取到的数据都会统一处理成字符串类型
2.输出内部信息
print
1.括号内既可以放数据值也可以放变量名 并且支持多个 逗号隔开即可
2.print自带换行符
换行符:\r\n \n(斜杠与字母组合到一起可能会产生特殊的含义)
3.print也可以切换结束符
print(数据,end='默认是\n')
扩展:python2与python3中两个关键字的区别
python2中
input方法需要用户自己提前指定数据类型 写什么类型就是什么类型
raw_input方法与python3中input一致 输入的统一处理成字符串
python2中
print方法有两种使用方式
print 数据值
print(数据值)
三、格式化输出
使用占位符%s # 常见数据类型都支持
%d # 只支持数字类型
'''单个占位符'''
print('%s同志你好' % '张三')
print('%s同志你好' % ('张三',))
# 输出结果
张三同志你好
'''多个占位符''' # 有几个占位符就需要几个数据值
desc = '姓名:%s 年龄:%s 爱好:%s'
print(desc % ('张三', 18, '学习'))
print('姓名:%s 年龄:%s 爱好:%s' % ('李四', 18, 'run'))
# 输出结果
姓名:张三 年龄:18 爱好:学习
姓名:李四 年龄:18 爱好:run
四、python运算符
1.基本运算符
2.比较运算符
3.逻辑运算符
'''and 与'''
and链接的多个条件必须全部满足 结果才成立
1 > 2 and 4 < 8 and 10 < 1 and 1 == 2
如果条件中全部由and组成那么判断起来非常的简单 只要发现一个条件未满足 结果就不成立
'''or 或'''
or连接的多个条件只要满足一个条件 结果就成立
1 > 2 or 4 < 8 or 10 < 1 or 1 == 2
如果条件中全部由or组成那么判断起来非常的简单 只要满足一个条件 结果就成立
'''not 非'''
not取反 类似于说反话
print(not 1<10) # False
五、多种赋值方式
1.链式赋值
name = 'jason'
name1 = name
name2 = name
链式赋值
name = name1 = name2 = 'jason'
2.交叉赋值
m = 100
n = 999
'''让m和n互相转换绑定的值'''
"""奇葩式写法"""
m = n
n = m
print(m, n) # 999 999
'''方式1:采用中间变量'''
temp = m
m = n
n = temp
print(m, n) # 999 100
'''方式2:交叉赋值语法'''
m, n = n, m
print(m, n) # 999 100
3.解压赋值
name_list = ['Gaoli', 'kevin', 'tony', 'oscar']
'''low的写法'''
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
# name4 = name_list[3]
'''解压赋值语法'''
# name1, name2, name3, name4 = name_list
解压赋值在使用的时候 正常情况下需要保证左边的变量名与右边的数据值个数一致
# a, b = name_list # 变量名少了不行
# a, b, c, d, e = name_list # 变量名多了也不行
当需要解压的数据个数特别多 并且我们只需要使用其中的几个 那么可以打破上述的规则
# a, *b = name_list # *会自动接收多余的数据 组织成列表赋值给后面的变量名
# print(a) # Gaoli
# print(b) # ['kevin', 'tony', 'oscar']
# a, c, *b = name_list
# print(a)
# print(c)
# print(b) # ['tony', 'oscar']
# a, *b, c = name_list
# print(a) # Gaoli
# print(b) # ['kevin', 'tony']
# print(c) # oscar
当数据值不准备使用的时候 可以使用下划线作为变量名绑定
a, *_, c = name_list
六、垃圾回收机制
- 垃圾回收机制
专门清理不可用的变量值所占的内存空间 - 为什么要用垃圾回收机制
程序运行过程中会占用大量的内存空间,对于一些没有用的内存空间没有及时处理的话,会造成内存占满电脑卡顿,程序奔溃。就用到了我们的垃圾回收机制自动管理。 - 垃圾回收机制方式
①引用计数
②标记清除
③分代回收 - Python采用的是引用计数机制为主,标记清除和分代收集两种机制为辅的策略。
七、流程控制
-
顺序结构
-
分支结构
-
单if分支结构
if 条件: 条件成立之后才会执行的代码快 username = input('username>>>:') if username == 'ZGL': print('大家好')
-
if...else...分支结构
if 条件: 条件成立之后执行的子代码 else: 条件不成立执行的子代码 username = input('username>>>:') if username == 'ZGL': print('大家好') else: print('好好学习')
-
if...elif...else分支结构
if 条件1: 条件1成立之后执行的子代码 elif 条件2: 条件1不成立 条件2成立执行的子代码 elif 条件3: 条件1和2都不成立 条件3成立执行的子代码 else: 上述条件都不成立 执行的子代码 ps:中间的elif可以写多个、上述子代码永远只会走一个 score = input('请输入学生成绩>>>:') score = int(score) # 将字符串的整数转换成整型的整数 if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 70: print('一般') elif score >= 60: print('及格') else: print('挂科 交钱重修')
- 循环结构
count = 1 while count < 5: print('hello world') count += 1 # count = count + 1 print('想不想干饭?')
- 流程控制必备知识
- python中使用代码的缩进来表示代码的从属关系
- 从属关系:缩进的代码(子代码)是否执行取决于上面没有缩进的
- 并不是所有的代码都可以拥有缩进的代码(子代码)
- if关键字
- 如果有多行子代码属于同一个父代码 那么这些子代码需要保证相同的缩进量
- python中针对缩进量没有具体的要求 但是推荐使用四个空格(windows中tab键)
- 当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定需要冒号
- 相同缩进量的代码彼此之间平起平坐 按照顺序结构依次执行
- if的嵌套使用
age = 28 height = 170 weight = 110 is_beautiful = True is_success = False username = 'tony' if username == 'tony': print('tony发现目标') if age < 30 and height > 160 and weight < 150 and is_beautiful: print('大妹纸 手机掏出来 让我加微信') if is_success: print('吃饭 看电影 天黑了...') else: print('去你妹的 流氓!!!') else: print('不好意思 认错人了') else: print('不是tony做不出来这件事')
- for循环结构
1.for循环的主要应用场景:循环获取多个数据值 2.for循环语法结构: for 变量名 in 待遍历的数据: for循环体代码 eg: info = 'hello word' for i in info: print(i) # 打印出来十位字符,输出的是单个字符,空格也算单个字符 3.for循环特点:擅长遍历取值,不需要结束条件(遍历完自动结束) 4.for循环主要遍历的数据类型有(字符串,列表,元组,字典,集合) 5.for循环中如果执行到break也会直接结束整个循环的 6.for循环如果执行到continue也会结束当前循环开始下一次循环
八、数据类型的内置方法、相关操作
- 数据类型内置方法简介
所有的数据类型基本上都自带了一些操作以及通过点的方式调用自带的方法
- 整型相关操作
类型转换
int()
十进制转其他进制
bin()
oct()
hex()
其他进制转十进制
int()
- 浮点型相关操作
类型转换
float()
python对数字不敏感
- 字符串相关操作
类型转换
str()
字符串必须要掌握的操作
1.索引取值
2.切片操作
3.间隔、方向、步长
4.统计字符串中字符的个数 len()
5.移除字符串首尾指定的字符 strip()lstrip()左rstrip()右
6.安装知道的字符切割字符串 split()rsplit()默认从左往右
7字符串格式化输出 format() f‘{变量名}’
字符串必须要了解的操作
1.带小写相关
upper() lower() isupper() islower()
2.判断字符串中是否是纯数字
isdigit()
3.判断字符串的开头或者结尾
startswith() endswith()
4.统计字符串中字符出现的次数
count()
5.替换字符串中指定的字符
replace()
6.字符串拼接
join() +
7.索引相关操作
index() find()
8.补充操作
title() swapcase()
- 列表相关操作
类型转换
list()
必须要掌握的操作
1.索引取值
2.切片操作
3.间隔、方向、步长
4.统计列表中数据值的个数 len()
5.索引修改数据值 l1[0] = 值
6.列表添加数据值 append() insert() extend() +
7.列表删除数据值 del l1[0] remove() pop()
8.排序 sort()
9.翻转 reverse()
10.统计列表中数据值出现的次数 count()
- 可变与不可变类型
可变类型
值改变 内存地址不变
不可变类型
值改变 内存地址肯定变
- 元组相关操作
1.类型转换
tuple()
ps:支持for循环的数据类型都可以转成元组
2.元组必须掌握的方法
t1 = (11, 22, 33, 44, 55, 66)
1.索引取值
2.切片操作
3.间隔、方向
4.统计元组内数据值的个数
print(len(t1)) # 6
5.统计元组内某个数据值出现的次数
print(t1.count(11))
6.统计元组内指定数据值的索引值
print(t1.index(22))
7.元组内如果只有一个数据值那么逗号不能少
8.元组内索引绑定的内存地址不能被修改(注意区分 可变与不可变)
9.元组不能新增或删除数据
- 集合相关操作
1.类型转换
set()
集合内数据必须是不可变类型(整型 浮点型 字符串 元组)
集合内数据也是无序的 没有索引的概念
2.集合需要掌握的方法
去重
关系运算
ps:只有遇到上述两种需求的时候才应该考虑使用集合
3.去重
s1 = {11, 22, 11, 22, 22, 11, 222, 11, 22, 33, 22}
l1 = [11, 22, 33, 22, 11, 22, 33, 22, 11, 22, 33, 22]
s1 = set(l1)
l1 = list(s1)
print(l1)
'''集合的去重无法保留原先数据的排列顺序'''
4.关系运算
群体之间做差异化校验
eg: 两个微信账户之间 有不同的好友 有相同的好友
f1 = {'jason', 'tony', 'jerry', 'oscar'} # 用户1的好友列表
f2 = {'jack', 'jason', 'tom', 'tony'} # 用户2的好友列表
# 1.求两个人的共同好友
print(f1 & f2) # {'jason', 'tony'}
# 2.求用户1独有的好友
print(f1 - f2) # {'jerry', 'oscar'}
# 3.求两个人所有的好友
print(f1 | f2) # {'jason', 'jack', 'tom', 'tony', 'oscar', 'jerry'}
# 4.求两个人各自独有的好友
print(f1 ^ f2) # {'oscar', 'tom', 'jack', 'jerry'}
# 5.父集 子集
print(f1 > f2)
print(f1 < f2)
字符编码理论
该知识点理论特别多 但是结论很少 代码使用也很短
1.字符编码只针对文本数据
2.回忆计算机内部存储数据的本质
3.既然计算机内部只认识01 为什么我们却可以敲出人类各式各样的字符
肯定存在一个数字跟字符的对应关系 存储该关系的地方称为>>>:字符编码本
4.字符编码发展史
4.1.一家独大
计算机是由美国人发明的 为了能够让计算机识别英文
需要发明一个数字跟英文字母的对应关系
ASCII码:记录了英文字母跟数字的对应关系
用8bit(1字节)来表示一个英文字符
4.2.群雄割据
中国人
GBK码:记录了英文、中文与数字的对应关系
用至少16bit(2字节)来表示一个中文字符
很多生僻字还需要使用更多的字节
英文还是用8bit(1字节)来表示
日本人
shift_JIS码:记录了英文、日文与数字的对应关系
韩国人
Euc_kr码:记录了英文、韩文与数字的对应关系
"""
每个国家的计算机使用的都是自己定制的编码本
不同国家的文本数据无法直接交互 会出现"乱码"
"""
4.3.天下一统
unicode万国码
兼容所有国家语言字符
起步就是两个字节来表示字符
utf系列:utf8 utf16 ...
专门用于优化unocide存储问题
英文还是采用一个字节 中文三个字节
字符编码实操
1.针对乱码不要慌 切换编码慢慢试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes类型数据.decode()
3.python2与python3差异
python2默认的编码是ASCII
1.文件头
# encoding:utf8
2.字符串前面加u
u'你好啊'
python3默认的编码是utf系列(unicode)
标签:总结,26,name,22,30,list,字符串,print,数据
From: https://www.cnblogs.com/gaoli111/p/16767235.html