Python二级(05)——基本数据类型

一、知识导图

图1.png

二、数字类型

1、数字类型
a、Python语言提供3种数字类型: 整 数 类 型 、 浮 点 数 类 型 和 复 数 \color{red}{整数类型、浮点 数类型和复数} 类型,分别对应数学中的整数、实 数和复数。
b、1010是一个整数类型,10.10是一个浮点数类型, 10 + 10j是一个复数类型。
2、整数类型
a、与数学中的整数概念一致,没有取值范围限制
b、整数类型有4种进制表示:十进制、二进制、八进 制和十六进制。默认情况,整数采用十进制,其他进制需要增加引导符号
图2.png
3、浮点类型
a、带有小数点及小数的数字
b、Python语言中的浮点数类型 必 须 \color{red}{必须} 带有小数部
分,小数部分可以是0。例如:1010是整数, 1010.0是浮点数。
c、浮点数有2种表示方法:十进制形式的 一 般 表 示 \color{red}{一般表示} 科 学 计 数 法 \color{red}{科学计数法} 表示。除十进制外,浮点 数没有其他进制表示形式。下面是浮点数类 型的例子:
1010.0, -1010., 1.01e3, -1.01E-3
d、科学计数法使用字母e或者E作为幂的符号, 以10为基数,含义如下:
&lt; a &gt; e &lt; b &gt; = a ∗ 10 b \color{red}{&lt;a&gt;e&lt;b&gt; = a*10b} <a>e<b>=a10b
4、复数类型
a、复数类型表示数学中的复数。复数有一个基本单 位元素j,叫作“虚数单位”。含有虚数单位的数 被称为复数。例如:
11.3+4j -5.6+7j 1.23e-4+5.67e+89j
b、Python语言中,复数可以看作是二元有序实数对 (a, b),表示为:a + bj,其中,a是实数部分, 简称实部,b是虚数部分,简称虚部。虚数部分通 过后缀“J”或者“j”来表示。需要注意,** 当 b 为 1 时 , 1 不 能 省 略 , \color{red}{当b为1时, 1不能省略,} b11**即 1j表示复数,而j则表示Python程序 中的一个变量。
c、复数类型中实部和虚部都是浮点类型,对于复数z,可以用 z.real和z.imag分别获得它的实数部分和虚数部分

>>>(1.23e4+5.67e4j).real
12300.0
>>>(1.23e4+5.67e4j).imag
56700.0
>>>1.23e4+5.67e4j.imag # 先获得5.67e4j的虚部,再与1.23e4进行求和计算
69000.0

三、数字类型运算

1、数值运算操作符
a、Python提供了9个基本的数值运算操作符
图3.png
b、上标所有二元运算操作符(+、-、、/、//、%、**)都可 以与等号(=)相连,形成增强赋值操作符(+=、-=、=、 /=、//=、%=、**=)。用op表示这些二元运算操作符,增 强赋值操作符的用法如下:
x o p = y 等 价 于 x = x o p y \color{red}{x op = y 等价于 x = x op y} xop=yx=xopy

>>>x = 99
>>>x **=3 # 与x = x**3等价 >>>print(x)
970299

c、数值运算可能改变结果的数据类型,类型的改变与运
算符有关,有如下基本规则:
①整数和浮点数混合运算,输出结果是浮点数;
②整数之间运算,产生结果类型与操作符相关,/运算的结果是浮点数;
③整数或浮点数与复数运算,输出结果是复数。

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

2、数值运算函数
a、Python解释器提供了一些内置函数,在这些内置函 数之中,有6个函数与数值运算相关:
图4.png

四、字符串类型及格式化

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

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

d、Python语言转义符:
例如:\n表示换行、\表示反斜杠、'表示单引
号、"表示双引号、\t表示制表符(TAB)等。

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

e、字符串的索引
I、字符串是一个字符序列:字符串最左端位置标记为0,依次 增加。对字符串中某个字符的检索被称为索引。索引的使用 方式如下:
&lt; 字 符 串 或 字 符 串 变 量 &gt; [ 序 号 ] \color{red}{&lt;字符串或字符串变量&gt;[序号]} <>[]
II、如果字符串长度为L,正向递增需要以最左侧字符序号为0, 向右依次递增,最右侧字符序号为L-1;反向递减序号以最 右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。
III、字符串以Unicode编码存储,字符串的英文字符和 中文字符都算作1个字符。

>>>"青青子衿,悠悠我心。"[-5] 
'悠'
>>>s = "青青子衿,悠悠我心。" 
>>>s[5]
'悠'

f、字符串的切片
I、对字符串中某个子串或区间的检索被称为切片。切 片的使用方式如下:
&lt; 字 符 串 或 字 符 串 变 量 &gt; [ N : M ] \color{red}{&lt;字符串或字符串变量&gt;[N: M]} <>[N:M]

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

g、format()方法的基本使用
I、字符串format()方法的基本使用格式是:
&lt; 模 板 字 符 串 &gt; . f o r m a t ( &lt; 逗 号 分 隔 的 参 数 &gt; ) \color{red}{&lt;模板字符串&gt;.format(&lt;逗号分隔的参数&gt;) } <>.format(<>)
其中,模板字符串是一个由字符串和槽组成的字符 串,用来控制字符串和变量的显示效果。槽用大括 号({})表示,对应format()方法中逗号分隔的参数。

>>>"{}曰:学而时习之,不亦说乎。".format("孔子") 
'孔子曰:学而时习之,不亦说乎。'

II、如果模板字符串有多个槽,且槽内没有指定序号, 则按照槽出现的顺序分别对应.format()方法中的 不同参数。

>>>"{}曰:学而时习之,不亦{}。".format("孔子","说乎")
 '孔子曰:学而时习之,不亦说乎。'

III、可以通过format()参数的序号在模板字符串槽中 指定参数的使用,参数从0开始编号

>>>"{1}曰:学而时习之,不亦{0}。".format("说乎","孔子") 
'孔子曰:学而时习之,不亦说乎。'
>>>"{1}曰:{{学而时习之,不亦{0}}}。".format("说乎","孔子")" 
'孔子曰:{学而时习之,不亦说乎}。'

h、format()方法的格式控制
I、format()方法中模板字符串的槽除了包括参数序号,还 可以包括格式控制信息。
&lt; 参 数 序 号 &gt; : &lt; 格 式 控 制 标 记 &gt; \color{red}{{&lt;参数序号&gt;: &lt;格式控制标记&gt;}} <>:<>
II、其中,格式控制标记用来控制参数显示时的格式 。格式
控制标记包括:<填充><对齐><宽度>,<.精度><类型>6个 字段,这些字段都是可选的,可以组合使用
图5.png
① <填充>、<对齐>和<宽度>主要用于对显示格式的规范。
②宽度指当前槽的设定输出字符宽度, 如 果 该 槽 参 数 实 际 值 比 宽 度 设 定 值 大 , 则 使 用 参 数 实 际 长 度 \color{red}{如果该槽参数实际 值比宽度设定值大,则使用参数实际长度} 使。如果该值的 实际位数小于指定宽度,则按照对齐指定方式在宽度内 对齐, 默 认 以 空 格 字 符 补 充 \color{red}{默认以空格字符补充}
③对齐字段分别使用<、>和^三个符号表示左对齐、右对 齐和居中对齐, 默 认 左 对 齐 \color{red}{默认左对齐}
④填充字段可以修改默认填充字符,填充字符只能有一个。

>>>s = "等级考试"
>>>"{:25}".format(s)  #左对齐,默认
'等级考试                     '
>>>"{:^25}".format(s)  #居中对齐
'            等级考试            '
>>>"{:>25}".format(s)      #右对齐
'          等级考试           '
>>>"{:*^25}".format(s)    #居中对齐且填充*号
'**********等级考试***********'
>>>"{:+^25}".format(s)   #居中对齐且填充+号
'++++++++++等级考试+++++++++++'
>>>"{:十^25}".format(s)  #居中对齐且填充汉字“十”
'十十十十十十十十十十等级考试十十十十十十十十十十十'
>>>"{:^1}".format(s)  #z指定宽度为1,不足变量s的宽度
'等级考试'

⑥<.精度><类型>主要用于对数值本身的规范
⑦<.精度>由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。小数点可以理解为对数值的有效截断。

>>>"{:.2f}".format(12345.67890)
'12345.68'
>>>"{:>25.3f}".format(12345.67890)
'                12345.679'
>>>"{:.5}".format("全国计算机等级考试")
'全国计算机'

⑧<类型>表示输出整数和浮点数类型的格式规则。
对于整数类型,输出格式包括6种:
• b: 输出整数的二进制方式;
• c: 输出整数对应的Unicode字符;
• d: 输出整数的十进制方式;
• o: 输出整数的八进制方式;
• x: 输出整数的小写十六进制方式; • X: 输出整数的大写十六进制方式;

>>>"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,Ʃ,425,651,1a9,1A9'

⑨对于浮点数类型,输出格式包括4种:
• e: 输出浮点数对应的小写字母e的指数形式;
• E: 输出浮点数对应的大写字母E的指数形式;
• f: 输出浮点数的标准浮点形式;
• %: 输出浮点数的百分形式。

>>>"{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
>>>"{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14) # 对比输 出
'3.14e+00,3.14E+00,3.14,314.00%'

j、常用的format()方法格式控制信息

>>>"{:.2f}".format(3.1415926) # 输出小数点后两位
'3.14'
>>>"{:x}".format(1010) # 输出整数的十六机制形式 
'3f2'
>>>"{:.5}".format("这是一个很长的字符串") # 输出字符串的前5位 
'这是一个很'
>>>"{:-^10}".format("PYTHON") # 居中并填充 
'--PYTHON--'

2、字符串类型的操作
a、字符串操作符
针对字符串,Python语言提供了几个基本操作符
图6.png

>>>name = "Python语言" + "程序设计"
>>>name
'Python语言程序设计'
>>>"等级考试!" * 3
'等级考试!等级考试!等级考试!'
>>>"语言" in name
True
>>>'Y' in name
False

b、Python语言提供了一些对字符串处理的内置函数
图7.png

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

c、字符串处理方法
方法也是一个函数,只是调用方式不同。函数采用func(x) 方式调用,而方法则采用.func(x)形式调用。方法仅 作用于前导对象。
图8.png
①str.split(sep) 能够根据sep分隔字符串str,分割后的内容 以列表类型返回。

>>>"Python is an excellent language.".split()
['Python', 'is', 'an', 'excellent', 'language.'] 
>>>"Python is an excellent language.".split('a') 
['Python is ', 'n excellent l', 'ngu', 'ge.']
>>>"Python is an excellent language.".split('an') 
['Python is ', ' excellent l', 'guage.']

②str.count(sub)方法返回字符串str中出现sub的次数,sub 是一个字符串。

>>>"Python is an excellent language.".count('a') 
3

③str.replace(old, new)方法将字符串str中出现的old字符串 替换为new字符串,old和new的长度可以不同。

>>>"Python is an excellent language.".replace('a', '#') 
'Python is #n excellent l#ngu#ge.'
>>>"Python is an excellent language.".replace('Python', 'C') 
'C is an excellent language.'

④str.center(width, fillchar)方法返回长度为width的字符串, 其中,str处于新字符串中心位置,两侧新增字符采用 fillchar填充,当width小于字符串长度时,返回str。其 中,fillchar是单个字符。

>>>"Python".center(20, "=")
'=======Python======='
>>>"Python".center(2, "=")
'Python'

⑤str.strip(chars)从字符串str中去掉在其左侧和右侧chars 中列出的字符。chars是一个字符串,其中出现的每个字 符都会被去掉。

>>>print('    ===python===   '.strip(' '))
===python===
>>>print('    ===python===   '.strip(' ='))
python
>>>print('    ===python===   '.strip(' =n'))
pytho

⑥str.join(iter)中iter是一个具备迭代性质的变量,该方法将 str字符串插入iter变量的元素之间,形成新的字符串

>>>" ".join('PYTHON')
'P Y T H O N'
>>>",".join('12345')
'1,2,3,4,5'
>>>",".join(['1', '2', '3', '4', '5'])
'1,2,3,4,5'

五、数字类型的转换

1、数字类型的转换
a、Python语言提供type(x)函数对变量x进行类型判 断,适用于任何数据类型。

n = eval(input('请输入一个数字:')) 
if type(n) == type(123):
    print("输入的数字是整数。")
elif type(n) == type(11.3):
    print("输入的数字是浮点数。") 
else:
    print("无法判断输入类型。")

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

六、实例解析–凯撒密码

恺撒撒密码是古罗马恺撒大帝用来对军事情报进行加密 的算法,它采用了替换方法对信息中的每一个英文字符 循环替换为字母表序列该字符后面第三个字符:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
n 原文字符P,其密文字符C满足如下条件:
C = ( P + 3 ) m o d 26 \color{red}{C = ( P + 3 ) mod 26} C=(P+3)mod26
n 解密方法反之,满足:
P = ( C – 3 ) m o d 26 \color{red}{P = ( C – 3 ) mod 26} P=(C3)mod26

1、恺撒密码-加密

chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
ord()返回值是对应的十进制整数。

比如:
txt = input('请输入明文文本:')
for t in txt:
    if 'a' <= t <= 'z':
        print(chr(ord("a") + (ord(t) - ord("a") + 3) % 26), end='')
    elif 'A' <= t <= 'Z':
        print(chr(ord("A") + (ord(t) - ord("A") + 3) % 26), end='')
    else:
        print(t, end='')

2、恺撒密码-解密

txt = input('请输入加密后的文本:')
for t in txt:
    if 'a' <= t <= 'z':
        print(chr(ord("a") + (ord(t) - ord("a") - 3) % 26), end='')
    elif 'A' <= t <= 'Z':
        print(chr(ord("A") + (ord(t) - ord("A") - 3) % 26), end='')
    else:
        print(t, end='')

交流

如果你有更好的解法或者有不同的意见,大家可以畅所欲言,共同提高进步!
群主也是小白一枚,零基础学习python,要勇于提问,大家共同探讨,共同学习进步!

1、加入qq群一起交流学习:818757567

图.png

2、关注微信公众号:python大星

图.png

明月几时有?把酒问青天。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值