3. Python基础:基本数据类型(九种数据类型)

目录

一、数值类型

1   整数类型

2   浮点数类型

3   复数类型

二、字符串类型

1   字符串类型

2  字节串类型(很少用到)

三、组合类型

1  集合类型:一维数组的集合

2  元组类型(序列) 

3   列表类型(序列)

4  字典类型 


Python语言包括九种基本的数据类型,我们把它分为以下三类。

数值类型整数、浮点数、复数
字节类型字符串、字节串
组合类型集合、元组、列表、字典

一、数值类型

1   整数类型

  • 与数学中的整数含义相同,无取值范围;
  • 整数包括二进制、八进制、十进制、十六进制等4种表示形式;
    • 二进制:以0b0B开头:0b1101,-0B10;
    • 八进制:以0o0O开头:0o456,-0O789;
    • 十进制:123,-321,0;
    • 十六进制:以0x0X开头:0x1A,-0X2B。
    • 如:0b1010 = 0o12 = 10 = 0xa

代码实例

2   浮点数类型

  • 与数学中的实数含义相同,带有小数及小数的数字存在取值范围;
  • 浮点数包括常规方法和科学计数法2种方式表示;
  • 科学计数法使用字母e或E作为幂的符号,以10位基数,格式<a>e<b> 表示 a*10^{b}
  • 如:0.0043 = 4.3e-3     ;  98000000.0 = 9.8E7
  • 不确定尾数问题:浮点数直接运算,可能产生不确定尾数。不确定尾数问题来源于浮点数在计算机中表示不精确的实际情况,广泛存在于编程语言中。可以使用round()辅助浮点数运算,消除不确定尾数

代码实例1

print(0.1 + 0.2)    # 不确定尾数问题

round(x , b):对x四舍五入,d是小数截取位数

print(round(0.1 + 0.2,1)    # 消除不确定尾数

代码实例2

3   复数类型

  • 与数学中的复数概念相同,定义 j = \sqrt{-1},复数表示为 a+bj;
  • z = a+bj,a是实部,b是虚部,a和b都是浮点数;
  • z.real获得z的实部,z.imag获得z的虚部。

代码实例

二、字符串类型

        我们要知道 1 和 "1"是两种不同的数据类型前者是一个数字,可以进行加减乘除的操作,而后者则是个单纯的字符串,也就是常说的文本内容。字符串的一个特点就是在它的两旁有单引号或者双引号。

1   字符串类型

(1)字符串定义

  • 字符串:由0个或多个字符组成的有序字符序列,由一对单引号(' ')一对双引号(" ")表示,可对字符进行索引,用序号进行访问。
  • 表示方法:由一对单引号或双引号表示,仅表示单行字符串;由一对三单引号或三双引号表示,可表示多行字符串。

(2)字符串的序号

代码实例

(3)字符串的使用

  • 使用[ ] 获取字符串中一个或多个字符。
  • 字符串索引s[N] 通过序号获取单个字符。
  • 字符串切片s[M:N] 获取M到N(不含)子串,使用[M: N :K]根据步长对字符串切片,使用[::-1]对字符串进行逆序。其中,M缺失表示至开头,N缺失表示至结尾。

代码实例

(4)字符串处理函数

函数及使用描述
len(x)长度,返回字符串x的长度
str(x)任意类型x所对应的字符串形式
hex(x)或oct(x)整数x的十六进制或八进制小写形式字符串
chr(x)x为Unicode编码,返回其对应的字符
ord(x)x为字符,返回其对应的Unicode编码

代码实例

(5)字符串处理方法

方法及使用描述
str.lower()或str.upper()返回字符串的副本,全部字符小写/大写
str.split(sep=None)回一个列表,由str根据sep被分割的部分组成
str.count(sub)返回子串sub在str中出现的次数
str.replace(old,new)返回字符串str的副本,所有old子串被替换为new
str.center(width[,fillchar])字符串str根据宽度width居中,fillchar可选
str.strip(chars)从str中去掉在其左侧和右侧chars中列出的字符
str.join(iter)在iter变量除最后元素外每个元素后增加一个str

代码实例

(6)常用格式字符符号

格式字符符号

说明

%s

格式化字符串

%r

字符串 (采用repr()的显示)

%c

单个字符

%d

格式化十进制整数

%i

十进制整数

%o

八进制整数

%x

十六进制整数

%e

指数 (基底写为e),用科学计数法格式化浮点数

%E

指数 (基底写为E)

%f、%F

浮点数

%g

指数(e)或浮点数 (根据显示长度)

%G

指数(E)或浮点数 (根据显示长度)

%%

一个字符% 

代码实例

name = input("请输入姓名:")
sex = input("请输入性别:")
age = input("请输入年龄:")
print("你的姓名是%s,性别%s,年龄是%d" % (name, sex, int(age)))

(7)字符串类型的格式化

格式化是字符串处理方法的一种,进行字符串格式的表达。

输入格式<模板字符串>.format(<逗号分割的参数>)

代码实例

a = 3.5
b = 2.8
c = a + b

print("{:.2f}".format(c))     # 保留两位小数

>>> 6.30

2  字节串类型(很少用到)

  • 字节串是计算机存储空间的表达;
  • 由0个或多个字节组成的有序序列,每字节对应值为0-255;
  • 字节串由前导符b或B与一对单引号双引号表示,如:b"a\xf6";
  • 0-255间非可打印字符用\xNN方式表示,N是一个十六进制字符。
  • 什么时候使用字节串?
    • 字节串只有在处理跟内存相关的内容或者我们处理的内容和字节的数量密切相关的时候才用字节串。

三、组合类型

1  集合类型:一维数组的集合

(1)定义

集合:多个元素的无序组合,使用大括号{}表示,元素间用逗号分隔,建立非集合使用{}或set()函数。

基本功能:集合的两个基本功能分别是去重和成员测试。

(2)特点

  • 无序:元素间没有顺序,因此,要求元素不能相同,元素必须是不可变类型。
  • 非一致性:元素类型可以不同。
  • 无索引不能对某个元素进行定点索引,可以遍历或随机获取元素。

(3)集合操作符

操作符说明
S | T并集
S & T交集
S - T差集
S ^ T补集
S <= T 或 S < T返回True或False,判断S和T的子集关系
S >= T 或 S > T返回True或False,判断S和T的包含关系

(4)集合处理方法

方法说明
S.add(x)如果x不在集合S中,将x加入S中
S.discard(x)移除S中x元素,如果x不在S,不报错
S.remove(x)移除S中x元素,若x不在S中,产生keyError异常
S.clear()清除S中的所有元素
S.pop()随机返回S中的一个元素,更新S,所S为空,产生keyError异常
S.copy()返回集合S的一个副本
len(s)返回集合S中元素个数
x in S判断x是否在S中
x in not S判断x是否不在S中
set(x)将其他类型变量x转变为集合类型,也可以用于数据去重

(5)代码实例

a = {'丁一', '丁一', '王二', '张三', '李四', '赵五'}
print(set(a))   # 通过set()函数可以获得一个集合,集合一个主要特点,就是用来去重
>>> {'丁一', '王二', '赵五', '张三', '李四'}

2  元组类型(序列) 

       Python中的元组与列表类似,是序列类型的一种,不同之处在于元组的元素一旦创建不能修改。元组使用小括号()表示,元素间用逗号分隔,小括号可以省略

(1)元组的定义

元组创建很简单,只需要在括号内添加元素,并使用逗号分开即可,具体代码如下:

tup1 = (36)
tup2 = (36,)
tup3 = ("hello")
tup4 = ("hello",)
print("tup1 = (50)的数据类型是:",type(tup1))
print("tup2 = (50,)的数据类型是:",type(tup2))
print("\ntup3 = (“hello”)的数据类型是:",type(tup3))
print("tup4 = (“hello”,)的数据类型是:",type(tup4))

(2) 访问元组中的值

       可以使用下标索引来访问元组中的值,也可以使用中括号的形式截取字符,还可以利用for循环语句来遍历元组中的值。具体代码如下:

tup1 = ("book", "desk", "bag", "chair", "dog", "cat", "panda", "sheep")

# 使用下标索引来访问元组中的值
print("元组中的第二个值,tup1[1]: ", tup1[1])

# 使用中括号的形式截取字符
print("元组中的第二和第五个值,tup1[1:5]: ", tup1[1:5])

# 利用for循环语句来遍历元组中的值
print("\n利用for循环语句来遍历元组中的值")
for i in tup1:
    print(i)

(3)元组的连接

元组中的元素是不允许修改的,但可以利用“+”号对元组进行连接组合。具体代码如下:

tup1 = ("张三","王芳","李四")
tup2 = ('男', '女',"男")
tup3 = (96, 89, 97)
tup4 = tup1 + tup2 + tup3   # 创建一个新的元组
print("连接元组:", tup4)

(4)元组的删除

元组中的元组是不允许删除的,但我们可以使用del语句来删除整个元组。具体代码如下:

tup = ("张三", "王芳", "李四")
print(tup)
del tup
print("删除后的元组 tup : ")
print(tup)

(5)元组的函数

元组的函数名含义
len(tuple)返回元组元素个数
max(tuple)返回元组元素的最大值
min(tuple)返回元组元素的最小值
tuple(seq)将列表转换为元组

代码实例

tuple1 = (5, 4, 8, 12, 16, 38, 999, 1562)
tuple2 = ("who", "what", "whose", "when")
print("元组中元素的最大值:", max(tuple1))
print("元组中元素的最小值:", min(tuple1))
print("元组中元素的最大值:", max(tuple2))
print("元组中元素的最小值:", min(tuple2))

print("\n元组中元素的个数:", len(tuple1))
print("\n元组中元素的个数:", len(tuple2))

print("\n把元组转换成列表,并显示:", list(tuple1))
print("把列表为元组,并显示:", tuple(list(tuple1)))

3   列表类型(序列)

         我们可以对列表这样去理解, 就把列表当成一个大桶, 当我们有一堆东西需要找个地方临时存放在一起, 以便后续进行排序, 筛选,提取等操作时, 就弄一个列表, 先放进去。

  • 序列类型的一种,元素间的有序组合,类型不限,创建后可以随时被修改
  • 列表使用中括号[]表示,元素间用逗号分隔,括号不可省略
  • 列表可以将多个数据有序地组织在一起,更方便调用
  • 如:ls = ["cat", "tiger", 1024]

(1)常用函数

函数名含义
len(list)返回列表元素个数
max(list)返回列表元素的最大值
min(list)返回列表元素的最小值
list(seq)将元组转换为列表
id(list)获取列表对象的内存地址

(2)常用方法

常用方法含义
list.append('baidu')追加"baidu"元素
list.insert(1,'baidu')在列表第一个位置插入“baidu”元素
list.index(x)返回列表中第一个值为x的元素的索引
list.remove(v)从列表中移除第一次找到的值v
list.pop([i])从列表中指定位置删除元素。并将其返回。
list.reverse()倒排列表中的元素
list.count(X)计数,返回x在列表中出现的次数
list.sort(key = None, reverse = False)对列表中的元素进行适当排序, reverse = True为降序, reverse = False为升序(默认)
del list[2]删除列表第三个元素
del list删除列表

(3)代码实例

  • 创建列表
class1 = ['丁一', '王二', '张三', '李四', '赵五']
print(class1)
>>> ['丁一', '王二', '张三', '李四', '赵五']
# 列表的元素类型不限
list1 = [1, '123', [1, 2, 3]]
print(list1)
>>> [1, '123', [1, 2, 3]]
  •  遍历列表
class1 = ['丁一', '王二', '张三', '李四', '赵五']
for i in class1:  # 使用for循环遍历列表
    print(i)

  •  列表元素计数
# 统计列表的元素个数的函数:len函数
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = len(class1)
print(a)
>>> 5
  • 列表元素调用
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = class1[1]    # 调取列表中第二个元素“王二”
print(a)
>>> 王二
  • 列表切片
# 选取多个列表元素的方法:列表切片
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = class1[1:4]   # 选取列表中第二个和第四个元素,列表切片左闭右开
print(a)
>>> ['王二', '张三', '李四']
b = class1[1:]  # 选取从第二个元素到最后
c = class1[-3:]  # 选取从列表倒数第三个元素到最后
d = class1[:-2]  # 选取倒数第二个元素前的所有元素(因为左闭右开,所以不包含倒数第二个元素)
print(b)
>>> ['王二', '张三', '李四', '赵五']
print(c)
>>> ['张三', '李四', '赵五']
print(d)
>>> ['丁一', '王二', '张三']
  • 增加列表元素
# 列表增加元素的办法:append方法
score = []
score.append(80)
print(score)
>>> [80]

score = []
score.append(80)
score.append(90)
score.append(70)
print(score)
>>> [80, 90, 70]
  • 列表转换成字符串
# 列表转换成字符串,这个先了解下即可,很远之后才用的上
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = ",".join(class1)
print(a)
>>> 丁一,王二,张三,李四,赵五

(4)代码实例:数字排序

list1 = []                    # 定义一个空列表
for i in range(8):          # 利用for循环向列表中添加数据
    mynum = int(input("请输入要排序的数字(一共8个数字):"))
    list1.append(mynum)
list1.sort()                  # 默认为升序
print("\n从小到大排序数字:", list1)
list1.sort(reverse=True)    # 设置排序为降序
print("\n从大到小排序数字:", list1)
print("\n数字中的最大值:", max(list1))
print("数字中的最小值:", min(list1))

 

4  字典类型 

(1) 字典介绍

  • 字典是另一种存储数据的格式。字典的每个元素都由两部分组成(列表的每个元素只有一个部分),前一部分称为键,后一部分称为值,中间用冒号相连。
  • 字典类型是键值对的集合,反映了数据之间的映射关系
  • 字典使用大括号{}表示,键值间用冒号分隔,键值对间用逗号分隔
  • 映射是一种键(索引)和值(数据)的对应;

语法格式

字典名 = {<键1>:<值1>, <键2>:<值2>, ..., <键n>:<值n>}

d = {"中国": "北京", "美国": "华盛顿", "法国": "巴黎"}

(2)通过键检索值

(3) 常用方法

常见方法含义
d.keys()返回一个列表,列表包含字典的所有的信息
d.values()返回一个列表,列表包含字典的所有的信息
d.items()返回一个列表,列表元素为字典的键和值构成的元组
d.len(d)返回字典的长度,即字典元素的数目
d.str(d)输出字典可打印的字符串
d.copy()复制一个字典
d.zip()合并列表组成字典
d.update()将一个字典的元素添加到另一个字典中
d.clear()删除字典中全部的键值对,使之变为空字典
del d[k]删除字典d中键k对应的值
k in d判断键k是否在字典d中
len(d)返回字典的个数

(4)代码实例

(5)  遍历字典 

  • 字典名["键名"]提取值
# 字典名["键名"]提取值
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
score = class1['王二']
print('score:',score)

>>> score: 95
  • 遍历字典内容
# 遍历字典内容1
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
for i in class1:  # 这个i代表的是字典中的键,也就是丁一、王二麻子等
    print('class1:',i,class1[i])

 

# 遍历字典内容2
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
for i in class1:  # 这个i代表的是字典中的键,也就是丁一、王二麻子等
    print(i + ':' + str(class1[i]))  # 注意要str把85等数字转换成字符串,才能进行字符串拼接

 

# 遍历字典内容3
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
a = class1.items()
print(a)

  • 删除字典键值对 
del class1['丁一']   # 删除字典键值对

print(class1)

  

好的,Python实验九主要包括文件操作和异常处理两个部分。下面我将分别介绍这两个部分的内容。 ### 文件操作 在Python中,可以通过open()函数打开一个文件,然后进行读写操作。open()函数的基本语法如下: ```python file_object = open(file_name [, access_mode][, buffering]) ``` 其中,file_name为文件名,access_mode为打开文件的模式,buffering为缓冲区大小。access_mode有以下几种模式: - "r":只读模式,打开文件后只能读取文件内容,不能修改文件内容。 - "w":只写模式,打开文件后只能写入文件内容,如果文件不存在则会创建文件,如果文件已存在则会清空文件内容。 - "a":追加模式,打开文件后只能写入文件内容,如果文件不存在则会创建文件。 - "r+":读写模式,打开文件后既可以读取文件内容也可以修改文件内容。 - "w+":读写模式,打开文件后既可以读取文件内容也可以修改文件内容,如果文件不存在则会创建文件,如果文件已存在则会清空文件内容。 - "a+":追加模式,打开文件后既可以读取文件内容也可以写入文件内容,如果文件不存在则会创建文件。 例如,我们可以使用以下代码打开一个文件并将文件内容输出到控制台: ```python file_object = open("example.txt", "r") print(file_object.read()) file_object.close() ``` 在使用完文件后,要记得使用close()函数关闭文件对象。 同时,Python还提供了一些文件对象的常用方法,例如: - file_object.read([size]):从文件中读取指定字节数的数据。 - file_object.readline():读取文件中的一行数据。 - file_object.readlines():读取文件中所有行的数据,并返回一个列表。 - file_object.write(str):将指定的字符串写入文件中。 - file_object.writelines(list):将指定的字符串列表写入文件中。 - file_object.seek(offset[, whence]):用于移动文件读取指针到指定位置。 ### 异常处理 在程序运行过程中,有可能会出现各种错误,例如文件不存在、数据类型不匹配等。为了使程序更加稳定和健壮,Python提供了异常处理机制。 异常处理的基本语法如下: ```python try: # 可能会出现异常的代码块 except Exception1: # 处理Exception1类型的异常 except Exception2: # 处理Exception2类型的异常 else: # 如果没有发生异常,则执行else代码块 finally: # 无论是否发生异常,都会执行finally代码块 ``` 其中,try代码块中包含可能会出现异常的代码,如果出现异常则会跳转到相应的except代码块中进行处理。如果没有出现异常,则会执行else代码块中的代码。无论是否出现异常,finally代码块中的代码都会被执行。 例如,我们可以使用以下代码进行异常处理: ```python try: num = int(input("请输入一个整数:")) result = 10 / num print(result) except ValueError: print("输入的不是整数!") except ZeroDivisionError: print("除数不能为0!") else: print("执行完毕!") finally: print("结束程序!") ``` 在上述代码中,如果输入的不是整数,则会跳转到ValueError类型的异常处理代码块中进行处理,如果除数为0,则会跳转到ZeroDivisionError类型的异常处理代码块中进行处理。如果没有出现异常,则会执行else代码块中的代码,并最终执行finally代码块中的代码。 以上就是Python实验九文件与异常的内容,希望能对你有所帮助。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简时刻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值