(共28张PPT)
第三章
算法的程序实现
3.2
Python语言程序设计
必修1《数据与计算》
3.2.2
数据与数据类型
明远教育
学习目标
数据与数据类型
数制及其之间的转换
数值的表示方法:
原码、反码和补码
变量与常量
Python语言的数据类型
明远教育
数制及其之间的转换
数据与数据类型
·数制也称计数制,是用一组固定的符号和统一的规则来表示数值的方法。
·通常采用的数制有十进制、二进制、八进制和十六进制。
·学习数制,必须首先掌握下列的3个概念
数码、基数和位权。
1、数制
明远教育
数制及其之间的转换
数据与数据类型
·数制中表示基本数值大小的不同数字符号。
·十进制有10个数码:0、1、2、3、4、5、6、7、8、9
·二进制有2个数码:0、1
·八进制有8个数码:0、1、2、3、4、5、6、7
·十六进制有16个数码:0、1、2、3、4、5、6、7、8、9、
A、B、C、D、E、F
或a、b、c、d、e、f
2、数制
明远教育
数制及其之间的转换
数据与数据类型
·定义:数制所使用数码的个数
·十进制的基数为
10
·二进制的基数为
2
·八进制的基数为
8
·十六进制的基数为
16
3、基数
明远教育
数制及其之间的转换
数据与数据类型
·定义:数制中每一位的位置价值。也就是说,每一位上的1所表示数值的大小。(基数^N)
·十进制的123:
1的位权是100,2的位权是10,3的位权是1。(10^N)
·二进制的10:
1的位权是2,0的位权是1。(2^N)
·八进制的12:
1的位权是8,2的位权是1。(8^N)
·十六进制的123:
1的位权是256,2的位权是16,3的位权是1。(16^N)
4、位权
明远教育
数制及其之间的转换
数据与数据类型
·其它进制转换为十进制
·方法:首先按其进制的位权展开,其次各展开项相加。结果就是相应的十进制数。
·二进制:10
?
1
(2^1)
+
0
(1^0)
=
2。
·八进制:101
?
1
(8^2)
+
0
(8^1)
+
1
(8^0)=
17。
·十六进制:123
?
1
(16^2)
+
2
(16^1)
+
3
(16^0)=
291
5、转换
明远教育
数制及其之间的转换
数据与数据类型
·十进制转换成其它进制
·方法:分整数部分和小数部分来进行。
整数部分:
基数除法
把要转换的数的整数部分除以新进制的基数,把余数作为新进制的最低位;把上一次得到的商再除以新进制基数,把余数作为新进制的次低位;
继续上一步,直到最后的商为零,这时的余数就是新进制的最高位。
小数部分:基数乘法
把要转换的数的小数部分乘以新进制的基数,把得到的整数部分作为新进制小数部分的最高位;把上一步得的小数部分再乘以新进制的基数,把整数部分作为新进制小数部分的次高位;继续上一步,直到小数部分变成零为止(或者达到预定的要求也可以)。
5、转换
明远教育
数制及其之间的转换
数据与数据类型
5、转换
例1:把十进制数59转换成二进制数
59
2
29
2
14
2
7
2
3
2
1
2
0
(59)10=(111011)2
1
1
0
1
1
1
1
1
1
0
1
1
余
余
余
余
余
余
明远教育
数制及其之间的转换
数据与数据类型
5、转换
例2:把十进制数159转换成八进制数
159
8
19
8
2
8
0
(159)10=(237)8
2
3
7
余
7
余
3
余
2
明远教育
数制及其之间的转换
数据与数据类型
5、转换
例3:
把十进制数459转换成十六进制数
459
16
28
16
1
16
0
(459)10=(1CB)16
1
C
B
余11
余12
余
1
明远教育
数制及其之间的转换
数据与数据类型
5、转换
·二进制与八进制的相互转换
·方法:
二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制。
八进制转换成二进制:用3位二进制数代替每一位八进制数。
·例:
(010
101
011)2
?
(2
5
3)8
明远教育
数制及其之间的转换
数据与数据类型
5、转换
·二进制与十六进制的相互转换
·方法:
二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制。
十六进制转换成二进制:用4位二进制数代替每一位十六进制数。
·例:
(0100
1010
0110)2
?
(4
A
6)16
明远教育
数制及其之间的转换
数据与数据类型
5、转换
·八进制与十六进制的相互转换
·方法: (用二进制过渡)
八进制转换成十六进制:先转换成二进制,再转换成十六进制。
十六进制转换成八进制:先转换成二进制,再转换成八进制。
·例:
(A
B)16
?
(010
101
011)2
?
(2
5
3)8
明远教育
数制及其之间的转换
数据与数据类型
6、位、字节和字
·位:
简称b,或bit,比特。数据存储的最小单位。每一位的状态只能是0或1。
·字节:
简称byte,
1byte
=
8b。存储空间的基本计量单位。硬盘容量也指的是字节。
一般来说:与传输速度相关的b一般都是指bit,与容量相关的b一般都是指byte。
·字:简称word,1word
=
2byte,一个英文字母和数字占一个字节,一个汉字占2个字节。
明远教育
原码、反码和补码
数据与数据类型
·原码:
最高位为符号位,其余各位为数值本身的绝对值。
·反码:
正数:反码与原码相同。
负数:符号位为1,其余位对原码取反。
·补码:
正数:原码、反码、补码相同。
负数:最高位为1,其余位为原码取反,再对整个数加1。
明远教育
原码、反码和补码
数据与数据类型
(用一字节表示数)
·负数补码转换成十进制数:
最高位不动,其余位取反加1。
原码
反码
补码
+7
00000111
00000111
00000111
-7
10000111
11111000
11111001
+0
00000000
00000000
00000000
-0
10000000
11111111
00000000
数值范围
01111111~
11111111
(-127~+127)
01111111~
10000000
(-127~+127)
01111111~
10000000
(-128~+127)
明远教育
变量与常量
数据与数据类型
·常量
定义:
程序运行时其值不能改变的量,也叫常数
注意:
python中没有使用语法强制定义常量,也就是说,python中定义常量本质上还是变量。
可以用以下的方法让其不能改变:
import
const
const.PI=3.14
如果再次对PI赋值,则会报错
明远教育
变量与常量
数据与数据类型
·常量
1、内置常量
False:bool
类型的假值
True:bool
类型的真值
None:NoneType
类型的唯一值。
None
经常用于表示缺少值,当因默认参数未传递给函数时
NotImplemented:二进制特殊方法应返回的特殊值
2、直接常量
整型常量
浮点型常量
字符常量
明远教育
变量与常量
数据与数据类型
·整型常量
四种形式:
1、十进制整数:python中标志:无
由数字0~9和正负号表示。如:123,-456,0。
2、二进制整数:python中标志:0b或0B
由0b或0B开头,后数字0~1表示。如:0b11001,0B10110。
3、八进制整数:python中标志:0o或0O
由0o或0O开头,后跟数字0~7表示。如:0o123,0O234。
4、十六进制整数:python中标志:0x或0X
由0x或0X开头,后跟0~9、a~f
或
A~F表示。
如:0x123,0XFF
明远教育
变量与常量
数据与数据类型
·浮点型常量
两种书写形式:
1)
十进制形式
这是我们平时看到的小数形式,例如
34.6、346.0、0.346
2)
指数形式
指数形式的写法为:
aEn
或
aen
E或e是固定的字符,用于分割尾数部分和指数部分。整个表
达式等价a×10^n
例如:2.1E5
=
2.1×10^5、3.7E-2
=
3.7×10^(-2)
注意:只要写成指数形式就是小数
例如:
14E3
等价于
14000,但
14E3
是一个小数
明远教育
变量与常量
数据与数据类型
·字符常量
定义:
用单引号括起来的单个普通字符或转义字符
例如:‘a’
‘A’‘?’‘\n’
‘\101’
字符常量的值:
该字符的ASCII码值
内存中
字符数据以ASCII码存储
例如:‘A’——65,
‘a’——97,
‘0’——48,
‘\n’——10
转义字符:
反斜线后面跟一个字符或一个代码值表示
例如:
‘A’---’\101’---’\x41’---65
例如:
‘\101’----‘A’
‘\012’-----’\n’
‘\376’----’?’‘\x61’-----’a’
‘\60’
----’0’
‘\483’-----(?)
明远教育
变量与常量
数据与数据类型
·转义字符
转义字符
说明
\n
换行符,将光标位置移到下一行开头。
\r
回车符,将光标位置移到本行开头。
\t
水平制表符,也即
Tab
键,一般相当于四个空格。
\a
蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器,响铃不一定有效。
\b
退格(Backspace),将光标位置移到前一列。
\\
反斜线
\'
单引号
\"
双引号
\
在字符串行尾的续行符,即一行未完,转到下一行继续写。
\ddd
3位8进制数代表的字符
\xhh
2位16进制数代表的字符
明远教育
变量与常量
数据与数据类型
·变量
可以看成一个小箱子,专门用来“盛装”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。
从底层看,程序中的数据最终都要放到内存(内存条)中,变量其实就是这块内存的名字。
注意:
1)变量是标识符的一种,它的名字要遵守
Python
标识符命名规范
2)Python
中的变量不需要数据类型声明
3)每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
明远教育
变量与常量
数据与数据类型
·变量赋值
格式:name
=
value
name:变量名;value:值,也就是要存储的数据。
注意:
1)变量的值不是一成不变的,它可以随时被修改,只要重新赋值即可
2)变量的值一旦被修改,之前的值就被覆盖了,就不存在了。换句话说,
变量只能容纳一个值
3)除了赋值单个数据,你也可以将表达式的运行结果赋值给变量
明远教育
变量与常量
数据与数据类型
·变量赋值
1)单个变量赋值
例如:a
=
12;
s
=
”AbC12”
2)多个变量赋值
例如1:a
=
b
=
c
=
1
创建一个整型对象,值为1,三个变量被分配到相同的内存空间上
例如2:a,
b,
c
=
1,
2,
"john"
两个整型对象
1
和
2
分别分配给变量
a
和
b,字符串对象
"
john"
分配给变量
c
明远教育
数据类型
数据与数据类型
·Python数据类型
数
据
类
型
Numbers(数字)
String(字符串)
int(有符号整型)
complex(复数)
float(浮点型)
例如:12,0,-1,1_301_547
例如:3.14,
1.4E2
例如:12
+
0.2j
12表示实部,0.2
表示虚部
例如:'123',”Aad”
例如:
[
'python',
786
,
2.23,
'john',
70.2
]
例如:(
'python',
786
,
2.23,
'john',
70.2
)
例如:{'name':
'john','code':6734,
'dept':
'sales'}
例如:{1,
2,
'c',
(1,
2,
3)}
List(列表)
Tuple(元组)
Dictionary(字典)
Set(集合)
明远教育
Python数据类型转换
数据与数据类型
函数
描述
函数
描述
int(x
[,base])
将x转换为一个整数
set(s)
转换为可变集合
long(x
[,base]
)
将x转换为一个长整数
dict(d)
创建一个字典。d
必须是一个序列(key,value)元组。
float(x)
将x转换到一个浮点数
frozenset(s)
转换为不可变集合
complex(real
[,imag])
创建一个复数
chr(x)
将一个整数转换为一个字符
str(x)
将对象
x
转换为字符串
unichr(x)
将一个整数转换为Unicode字符
repr(x)
将对象
x
转换为表达式字符串
ord(x)
将一个字符转换为它的整数值
eval(str)
用来计算在字符串中的有效Python表达式,并返回一个对象
hex(x)
将一个整数转换为一个十六进制字符串
tuple(s)
将序列
s
转换为一个元组
oct(x)
将一个整数转换为一个八进制字符串
list(s)
将序列
s
转换为一个列表