(2023139056) Python程序设计第二章 数据类型

*本文内容仅针对Python 3.0 版本

1.数字类型

Python语言提供3种数字类型:整数类型(int)、浮点数类型(float)和复数类型(complex),分别对应数学中的整数、实数和复数。

 在此举一个简单的例子:

202310      是一个整数类型

2023.66     是一个浮点数类型

20+ 23 j     是一个复数类型


1.1整数类型

整数类型 与数学中的整数概念一致,没有取值范围限制,支持任意大小的整形数,整形数可以表示成十进制,八进制,十六进制和二进制形式。默认情况,整数采用十进制,其他进制需要增加引导符号,不同进制的整数之间可以直接转化。
1)二进制整型常量:前缀为0B或0b
(第1个字符为数字“0”,第2个字符为大写或小写字母“B”)
二进制数码为0和1,逢二进一。
如:0B1111(表示十进制数 15)。

2)八进制整型常量:须以0O或0o开头
(第1个字符为数字“0”,第2个字符为大写或小写字母“O”)
八进制数码为0~7,逢八进一,且通常是无符号数。
如: 0021(表示十进制数 17)。

3)十进制整型常量:数码为 0~9。
如: -2325

4)十六进制整型常量 前缀为0X或0x
(第1个字符为数字“0”,第2个字符为大写或小写字母“X”)
十六进制数码为0~9,A~F或a~f(代表10~15),逢十六进一。
如:0X2A(表示十进制数42)      、 0XFFFF(表示十进制数65535)。

1.2浮点数类型

浮点数类型是 带有小数点及小数的数字,其必须带有小数部分,小数部分可以是0 在大部分的认知中,浮点数有2种表示方法:十进制形式的 一般表示科学计数法表示。除十进制外,浮点数没有其他进制表示形式。下面是浮点数类型的例子:
1)1010.0,  2) -1010.,    3)  1.01e3,   4)   -1.01E-3
科学计数法使用大小写字母”e“或者作为幂的符号,以10为基数,含义如下:

<a>e<b> = a*10b

上例中,1.01e3值为1010.0-1.01E-3值为0.00101

浮点数类型的数值范围和小数精度受不同计算机系统的限制。除高精度科学计算外的绝大部分运算来说,浮点数类型的数值范围和小数精度足够“可靠”。

1.3复数类型

复数类型表示数学中的复数。复数有一个基本单位元素 j,叫作“虚数单位”。含有虚数单位的数被称为复数。
复数亦可看作是二元有序实数对( a, b ),表示为: a + bj ,其中, a 是实数部分,简称实部, b 是虚数部分,简称虚部。 虚数部分通过后缀大小写字母“ J” 或者“ j” 来表示
需要注意 ,当 b 1 时, 1 不能省略,以便区分复数和实数,即 1j 表示复数,而 j 则作为 Python程序中的一个变量, 特此强调 ,复数类型中实部和虚部都是 浮点类型
在此举例:  1)     11.3+4j      2)     -5.6+7j      3)     1.23e-4+5.67e+89j

2.数值运算符

2.1算术运算符

以下为我认知的常见9个算术运算符

算术运算符
名称运算符说明
加(和)

x + y

xy之和

减(差)

x - y

xy之差

乘(积)

x * y

xy之积

除(商)

x / y

xy之商

整除(整数商)

x // y

xy之整数商

(即:不大于xy之商的最大整数)

取余(模运算)

x % y

xy之商的余数

(即:模运算)

负值

-x

x的负值,即:x*(-1)

本身

+x

x本身

x**y

xy次幂,即:x^{y}

2.2赋值运算符

上标所有二元运算操作符(“+”、“-”、“*”、“/”、“//”、“%”、“**”)都可以与等号(=)相连,形成增强赋值操作符(“+=”、“-=”、“*=”、“/=”、“//=”、“%=”、“**=”)。

赋值运算符
名称运算符说明
赋值=c = a + b (把a+b的值赋给c)
加法赋值+=c + a =a 等效于c =  c + a
减法赋值-=c - a =a 等效于c =  c - a
乘法赋值*=c * a =a 等效于c =  c * a
除法赋值/=c / a =a 等效于c =  c / a
取整除赋值//=c // a =a 等效于c =  c // a
取模赋值%=c % a =a 等效于c =  c % a
幂赋值**=c ** a =a 等效于c =  c ** a

其中数值运算可能改变结果的数据类型,类型的改变与运算符有关,有如下基本规则

1)整数之间运算,产生结果类型与操作符相关,“/”运算的结果是浮点数;

2)整数和浮点数混合运算,输出结果是浮点数;

3)整数或浮点数与复数运算,输出结果是复数。

>>>1010/10       # 1). "/"运算的结果是浮点数 
101.0
>>>1010.0//3     # 2). 浮点数与整数运算,产生结果是浮点数
336.0
>>>1010.0 % 3    # 2). 浮点数与整数运算,产生结果是浮点数
2.0
>>>10 - 1 + 1j   # 3). 等价于 10 – (1 + 1j)
(9+2j)           #     结果是复数

2.3位运算符

由于人类通常使用十进制运算符,而计算机使用二进制进行计算,这就需要进行位进制转换。依据运算结果,在计算机执行后转化为十进制返回给读者。按照书中示例,a为15(0000 1111),b为202(1100 1010),运算结果如下:

位运算符的相关示例
名称运算符位运算和表达式二进制结果(十进制结果)
按位与&a&b0000 1010 (10)
按位或|

a|b

1100 1111(207)

按位异或

(相同取0,不同取1)

^a^b1100 0101 (197)
按位取反~~b0011 0101(35)
左移位<<b<<20010 1011 (43)
右移位>>b>>20011 0010  (50)

3.数值运算函数

3.1内置数值计算函数

内置函数是Python3.0语言固有的功能,可直接在程序使用。

Python提供的内置数值计算函数
函数描述

abs(x)

返回x的绝对值
round (x) 将x进行四舍五入并进行取整

max([x1,x2,……])

求最大值
min([x1,x2,……])求最小值
sum([x1,x2,……])求和

3.2随机数模块函数

常用的random模块的函数
函数描述
random()返回一个[0.0,1.0)的随机浮点数

4.布尔型

布尔型数据可用于条件、循环语句,根据条件判断的结果来决定程序流程和分支的走向,也可用于在逻辑运算中表示逻辑结果。其中,布尔型数据是布尔值,它有自己的运算符。使用比较运算符和判断运算符进行运算产生的结果是布尔值。

4.1布尔值

布尔值只有两个:真(True)和假(False)
Python中的任何对象都可以判断其真假,在下列情况中对象的布尔值为False。
(1)  None.
(2)数值中的0、0.0、0j(虚数)、Decimal(0)、Fraction(0, 1)。
(3)空字符串(')、空元组(())、空列表([])、空字典({})、空集合(set())。在其他情况中对象的布尔值默认为True,除非它使用了bool()方法且返回False或使用了len()方法且返回0。

4.2布尔运算

布尔运算包括非(not)、与(and)和或(or),优先级从高到低。布尔运算的规则如下。(1)非运算(not x):如果x为False,则结果为True,否则为False。
(2)与运算(x and y):如果x为False,则不用考虑y,结果为False;如果x为True,则结果取决于y为True还是False。
(3)或运算(x or y):如果x为False,则结果取决于y为True还是False:如果x为True,则结果为True,不用考虑y。

4.3.比较运算

Python中比较运算符用于比较运算,它们有相同的优先级,并且比布尔运算符的优先级高。比较运算符如下。 

<:小于。
<=: 小于等于。
>:大于。
>=:大于等于。
==:等于。
!=:不等于。
is:是对象。

is not: 不是对象。

(1)数值型数据按数值比较大小;半角字符串从前到后逐个按对应字符的
ASCII值比较大小;其他字符(如汉字)按照其编码比较大小。
(2)进行大小比较的操作数必须是同类的,不能把一个字符串和一个数字进行
大小比较。


5.字符串

5.1字符串类型

字符串是字符的序列表示,根据字符串的内容多少分为单行字符串和多行字符串。其中,单行字符串可以由一对单引号(')或双引号(")作为边界来表示,单引号和双引号作用相同。多行字符串可以由一对三单引号(''')或三双引号(""")作为边界来表示,两者作用相同。

>>> print('这是"单行字符串"')
这是"单行字符串"
>>> print("这是'单行字符串'")
这是'单行字符串'
>>>print("""这是'多行字符串'的第一行
这是'多行字符串'的第二行
""")
这是'多行字符串'的第一行
这是'多行字符串'的第二行
>>>print('''这是"多行字符串"的第一行
这是"多行字符串"的第二行
''')
这是"多行字符串"的第一行
这是"多行字符串"的第二行

5.2转义字符

转义符:" \ "    "  \n " 表示换行、 " \\ "表示反斜杠、" \' "表示单引号、"  \"   "表示双引号、 " \t  "表示制表符(TAB)。

>>>print("既需要'单引号'又需要\"双引号\"")
既需要'单引号'又需要"双引号"

5.3字符串的索引

字符串是一个字符序列:字符串最左端位置标记为0,依次增加。对字符串中某个字符的检索被称为索引。索引的使用方式如下

<字符串或字符串变量>[序号]

如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L

反向递减序号<--------------------------
-9-8-7-6-5-4-3-2-1
Likeyou!
012345678
正向递增序号--------------------------->
字符串以 Unicode 编码存储,字符串的英文字符和中文字符都算作 1 个字符。
>>>"青青子衿,悠悠我心。"[-5]
'悠'
>>>s = "青青子衿,悠悠我心。"
>>>s [5]
'悠'

5.4字符串的切片

对字符串中某个子串或区间的检索被称为切片。切片的使用方式如下:

<字符串或字符串变量>[N: M]

s[:]截取字符串的全部字符。s[0]:截取s字符串中第1个字符。
s[-1]:截取s字符串中倒数第1个字符。
s[1:4]:截取s字符串中第2~4个字符。
s[6:]:截取s字符串中第7个字符到结尾。
s[:-3]:截取 s 字符串从头开始到倒数第3个字符之前。
s[::-1]:获取与s字符串顺序相反的字符串。
s[-3:-1]:截取s字符串倒数第3位与倒数第1位之前的字符。
s[-3:]:截取s字符串倒数第3位到结尾。

>>>"青青子衿,悠悠我心。"[8:4]
''
>>>"青青子衿,悠悠我心。"[:4]
'青青子衿'
>>>"青青子衿,悠悠我心。"[5:]
'悠悠我心。'
>>>print("青青子衿,悠悠我心。"[5:])
悠悠我心。

5.5字符串大小写转换

字符串大小写转换方法如下。
字符串 .lower(): 将字符串转换为小形式。
字符串 .upper(): 将字符串转换为大写形式。
字符串 .capitalize(): 将字符串首字母转换为大写形式。
字符串 .title(): 将每个单词的首字母转换为大写形式。
字符串 .swapcase(): 转换字符大小写形式。
islower().isupper().isalpha().isalnum()、isspace()、istitle():   判断字符串是否以纯小写字母、纯大写字母、字母(汉字)、字母和数字、空格和每个单词首字母大写组成。
字符串大小写转换的示例如下:

>>>s1="What time is it?"
>>> print(s1.lower(),'\n',s1.title(),'\n',s1.swapcase())
what time is it?
What Time Is It?
WHAT TIME IS IT?

5.6字符串处理函数

Python语言提供了一些对字符串处理的内置函数

字符串处理函数

函数

描述

len(x)

返回字符串x的长度,也可返回其他组合数据类型的元素个数

str(x)

返回任意类型x所对应的字符串形式

chr(x)

返回Unicode编码x对应的单字符

ord(x)

返回单字符x表示的Unicode编码

hex(x)

返回整数x对应十六进制数的小写形式字符串

oct(x)

返回整数x对应八进制数的小写形式字符串

>>>len("全国计算机等级考试Python语言科目")
19
>>>chr(10000)
'✐'
>>>hex(1010)
'0x3f2'

5.7数字类型转换

数值运算操作符可以隐式地转换输出结果的数字类型,例如,两个整数采用运算符“/”的除法将可能输出浮点数结果。此外,通过内置的数字类型转换函数可以显式地在数字类型之间进行转换。

数字类型的转换

函数

描述

int(x)

x转换为整数,x可以是浮点数或字符串

float(x)

x转换为浮点数,x可以是整数或字符串

str(x)

x转换为字符串,x可以是整数或浮点数

6. 元组

元组是一种不可变的有序集合,一旦创建就不能修改。

my_name = ("张**", True)

7. 字典

字典可以通过直接赋值的方式,将值赋入/更改字典里面,同理,也可以删除(.pop)字典里的元素。

dict 1 = {"name": "zhangweihan", "age": 20}  #赋值dict 1字典
dict 1 ["city"] = "Fuzhou"                   #添加键“城市”,元素“福州”
dict 1 ["age"] = 21                          #更改键“年龄”的元素为“21”
age = dict 1.pop("age")                      #删除键“年龄”

因为一个键对应一个元素,对于我们编程爱好者来说,调用键值,获取键是否存在/是否需要删除显得尤为重要。

dict 2 = {"name": "zhangweihan", "age": 21}
name = dict 2.get("name")                          # 获取name的值  "zhangweihan"
>>name = "John"                         

keys = dict 2.keys()  # keys = ["name", "age"]     # 获取字典dict 2中所有的键
>>"name", "age"

values = dict 2.values()  # values = ["John", 30]  # 获取字典dict 2所有的值
>>"John", 30

del dict 2["age"]                                  # 删除指定键的元素
print(dict 2)                                  
>>dict 2 = {"name": "zhangweihan"}

has_name = "name" in dict 2                        # 判断name键在字典dict 2 里面吗?
>>True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值