_大家好
好几天没有给大家更新文章了啊。今天,我们来唠一唠——
python3级!
提前事项:
本次内容全为干货,十分长,请慢慢食用!
本次内容较长,涉及到了数制转换,二维数据和数据处理。后面还有准备的练习题。
好,咱们废话不多说,开始今天的学习旅程!
目录
3.9.read()与readline()、readlines()的区别
一、数制转换
1.1.二、八、十、十六进制及其转换
1.1.1.数制介绍
如果说语言是思想的载体,那么不同语言的计数方式则反映了不同的算数思维方式。
传说在人来早起,不同民族不同语言中先后出现过以十个手指头为单位的“十进制”;
以手脚共二十个指头为单位的“二十进制”;
以及方便天文历法的“十二进制”或者“六十进制”。
二进制起源于中国。二进制的运用,在我国古代就已呈现的淋漓尽致。
随着人类的发展,几乎所有的语言最终都采取了以“十”为单位的计数方式。
总之,技术的单位没有绝对的好坏标准,只要认为方便好用即可。
1.1.2.十进制
这就不用说了。我们平时算数都是用十进制的!
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
1.1.3.二进制
由0和1组成,逢二进一,常用于表示电路中电流的油污、高低,晶体管的导通和截止等等。二进制兼容逻辑运算。
0+0=0 0+1=1 1+0=1 1+1=10
0*0=0 0*1=0 1*0=0 1*1=1
剩下的进制和前两个差不多。
1.1.4.二进制转换
十进制转二进制:除二取余、逆序输出、利用短除、注意结果
二进制转十进制:按*权展开、逐项相加
Tips*:权,是在高中数学中的一个术语。详细内容请到:百度百科
1.1.5.Binary转换函数
利用python来转换进制:
>>>print(bin(11))
'0b1011'
bin函数将十进制整数转换成二进制数,返回结果是字符串。
二进制的前缀“0b”和“0B”等价,不区分大小写。
>>>print("0b1011")
11
还可以用int函数!
>>>print(int('1011', '2'))
11
记住格式:int(str, 进制)
1.1.6.八进制
由0~7组成,逢八进一。
八进制转十进制:除八取余、逆序输出、利用短除
十进制转八进制:按权展开、逐项相加
1.1.7.Octal转换函数
记住,不是oct(10),而是八进制!
>>>print(oct(11))
'0o31'
>>>print('0o31')
25
>>>print(int('31', '8'))
25
oct函数将十进制整数转换成八进制数,返回结果是字符串。
八进制的前缀“0o”和“0O”等价,不区分大小写。
1.1.8.十六进制
由0~9和A~F组成,逢十六进一。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
十进制转十六进制:除十六取余、逆序输出、利用短除
十六进制转十进制:按权展开、逐项相加
1.1..9.Hexadecimal转换函数
>>>print(hex(43))
'0x2b'
>>>print('0x2b')
43
>>>print(int('2b', 16))
43
hex函数将十进制整数转换成十六进制数,返回结果是字符串。
十六进制的前缀“0x”和“0X”等价,不区分大小写。
二、练习题
请等待下一封信。
恭喜你看完了——
三分之一的内容!
加油!
二、二维数据
2.1.六大基本数据类型
123 数字
"123" 字符串
[1, 2, 3] 列表
(1, 2, 3) 元组
{"x":1, "y":2, "z":3} 字典
{1, 2 ,3 ,4 ,5} 集合
相信大家前五个都认识,但是第六个集合就不一定了。
2.2.集合
集合是由不重复元素组成的无序容器。(有点绕!)
>>>a = {1, 2, 3, 4, 5}
>>>b = set(1, 2, 3, 4, 5)
>>>c = set(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)
>>>d = {5, 4, 3, 2, 1}
>>>a == b == c == b
True
集合的差集
>>>a = {1, 2, 3}
>>>b = set(3, 4, 5)
>>>a-b # in a not in b
{1, 2}
集合的合集
>>>a|b # in a or b or both
{1, 2, 3, 4, 5}
集合的交集
>>>a&b # in both a and b
{3}
集合的对称差集
>>>a^b # in a or b but not both
{1, 2, 4, 5}
列表与集合同时查找出现过的元素:
列表:
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = []
for i in list1:
if i in list2:
list3,append(i)
print(list3)
集合
list1 = [1, 2, 3, 4, 2, 3, 1, 2, 2]
set1 = set(list1)
print(list(set1))
2.3.基本数据类型
2.3.1.一维数据
由对等关系的有序或无序数据构成,采用线性方式组织。
任何表现为序列或集合的对象都可以看做是一维数据。
2.3.2.二维数据
二维数据由多个一维数据构成,是一维数据的组合形式
二维数据一般采用相同的数据类型存储数据
表格是典型的二维数据
姓名 | 语文 | 数学 | 英语 |
AA | 100 | 95 | 98 |
BB | 93 | 100 | 89 |
CC | 95 | 99 | 99 |
score = [["AA", 100, 95, 98],
["BB", 93, 100, 89],
["CC", 95, 99, 99]]
score[0][0]
"AA"
2.3.3.高维数据
仅利用最基本的二元关系展示数据间的复杂结构
{"name":"光头强",
"adress":{"province":"黑龙江省",
"city":"哈尔滨市",
"street":"团结屯"},
"occupation":"伐木工"}
2.3.4.数据操作周期
数据储存<->数据表示<->数据操作
2.3.5.二维数据的遍历
score = [["AA", 100, 95, 98],
["BB", 93, 100, 89],
["CC", 95, 99, 99]]
for i in range(3):
for j in range(3):
print(score[i][j])
如果二维数据储存数据时采用了不同的数据结构,,上述写法还好用吗?为什么?
2.3.6.二维数据的表达形式
表格
柱状图
折线图
饼图
散点图
雷达图
恭喜你成功食用了三分之二
继续加油!
三、数据处理
3.1.文件读写
在同一根目录下时,打开文件很简单
变量名 = open(文件名, 打开模式)
file = open("test.txt", "r")
不在同一根目录下,则需文件路径
file = open("C:\Users\马赛克\Desktop\test\test.txt", "r")
3.2.打开模式
'r' 只读
'x' 新建写入。如果该文件存在会报错
'w' 覆盖写入。如果该文件不存在,创建新文件
'a' 尾部写入。如果该文件不存在,创建新文件
'w+' 覆盖写入并读取
'a+' 尾部写入并读取
此外还有'b', 't'等模式
3.3.文件操作
OS模块-Operation System
不用pip,python3自带的
import os
获取当前.py工作路径
os.getcwd()
暂时让.py去新的路径工作
os.chdir()
要么open时写上路径
f = open(r'test\test.txt', 'r')
要么临时修改路径
import os
os.chdir(r"C:\Users\马赛克\Desktop\test\test")
f = open("test.txt", "r")
不再使用的文件,记得要关闭。
file.close()
常有程序员(学习者、同学等等)会忘记.close()导致资源浪费
推荐:
with open('test.txt', 'r') as f:
t = f.read()
print(t)
要注意,python不能读取中文,否则会报错
UnicodeDecodeError
UnicodeError
3.4.一维数据操作
通过.join()向列表插入间隔符号并生成字符串。
f = open('test.txt', 'w')
n = ['a', 'b', 'c', 'd', 'e']
f.write(','.join(n))
f.close
通过writelines直接写入列表
f = open("test.txt", 'w')
n = ['a', 'b', 'c', 'd', 'e']
f.writelines(n)
f.close()
通过.split()酱油间隔符号的字符串转化为列表
f = open("test.txt", "r")
t = f.read()
t = t.split(',')
print(t)
3.5.CSV文件
CSV - Comma Separated Values
国际通用的一二维数据储存格式,一般.csv后缀名(扩展名)
每行一个一维数据,默认逗号分隔,无空行
Excel和一般编辑软件都可读取或另存为csv文件
3.6.读取CSV
逐行读取
f = open("test.csv", "r")
for i in f:
print(i)
f.close()
逐行读取并拆分为列表
f = open("test.csv", "r")
for i in f:
print(i.split(','))
f.close()
逐行读取、拆为列表并移除行末换行符\n
f = open("test.csv", "r")
for i in f:
i = i.replace('\n', '')
print(i.split(','))
f.close()
加油!快好了!
逐行读取、存为二维列表并移除行末换行符
f = open("test.csv", "r")
n = []
for i in f:
i = i.replace('\n', '')
n.append(i.split(','))
f.close()
print(n)
3.7.写入CSV
手动使用换行符写入
f = open("test.csv", "w")
n = '姓名, 语文, 数学, 英语 \nAA, 99, 99, 99'
注意逗号是英文的!
f.write(n)
f.close()
循环加入换行符写入
f = open("test.csv", "w")
n = [['姓名', '语文', '数学', '英语'], ["AA", "99". "99", "99"]]
for i in n:
f.write(','.join(i) + '\n')
f.close()
3.8.CSV模块
csv模块不用pip哦。
读取文件
import csv
with open('test.csv', 'r') as f:
t = csv.reader(f)
for i in t:
print(i)
写入文件
improt csv
with open("test.csv", "w") as f:
w = csv.writer(f)
w.writerow(['姓名', '语文', '数学', '英语'])
w.writerow(['AA', '99', '99', '99'])
a = ['BB', '80', '80', '80']
w.writerows(a)
3.9.read()与readline()、readlines()的区别
read()函数每次读取整个文件,返回结果为字符串
readline()函数每次读取文件的第一行,返回结果为字符串
readlines()每次按行读取整个文件的内容,返回结果为列表
3.10.write()与writelines()的区别
write()需要传入一个字符串作为参数,否则会报错
writelines()既可以传入字符串,也可以传入一个字符序列,并将该字符序列写入文件
恭喜恭喜!你读完了!
四、总结
通过这一次学习,我们了解了关于python3级的三个知识点,学习到了很多知识!
希望大家可以学习到更多知识!
给个关注,写作不易!
我们下一期再见。
涵子码农
2022/8/23