基本数据类型
标准数据类型
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
Python3 的六个标准数据类型中:
不可变数据(3 个): Number(数字), String(字符串), Tuple(元组)
可变数据(3 个): List(列表), Dictionary(字典), Set(集合)
本次主要介绍数字, 字符串, 布尔值这三种基本数据类型.
type()函数可以查看变量的类型.
数字
Python中使用数字类型来保存数字的数值, 它们是不可改变的数据类型. 如果修改数字类型变量的值, 那么会先把该值存储到内容中, 然后修改变量让其指向新的内存地址.
Python3 支持 int, float, bool, complex
整数
整数用来表示整数数值, 即没有小数部分的数值.在Python中整数包括正整数负整数和零,且他们的位数是任意的.
十进制整数:在程序中的表示方法和数学上的写法一模一样.
num1 = 10
num2 = -34
num3 = 0
num4 = 12345678901234567890123456789012345678901234567890
(除0以外,不能以0开头作为十进制数的开头)
八进制整数:由0-7组成的数字, 规则是 “逢八进一”, 前缀为0o或0O.
num5 = 0o123 #0o123 = 83
num6 = 0O456 #0O456 = 310
十六进制整数:由0-9和a-f(或A-F)组成的数字, 规则是 “逢16进1”, 前缀为0x或0X.
num7 = 0x1a2b3c #0x1a2b3c = 4382115
num8 = 0X4d5e6f #0X4d5e6f = 1234567
二进制整数:由0-1组成的数字, 规则是 “逢2进1”, 前缀为0b或0B.
num9 = 0b101010 #0b101010 = 42
num10 = 0B11110000 #0B11110000 = 240
浮点数
浮点数用来表示小数, 即有小数部分的数值. 在Python中, 浮点数有两种表示方法: 科学计数法和十进制表示法.
科学计数法: 科学计数法是指用字母e或E表示指数的形式, 即用e或E后面跟着一个整数, 表示10的多少次方.
十进制表示法: 十进制表示法是指用小数点”.”来表示小数部分, 即用小数点”.”后面跟着一串数字表示小数.
num11 = 3.14e-2 #3.14 * 10^-2 = 0.0314
num12 = 6.02e23 #6.02 * 10^23 = 6.02 * 10^23
num13 = 3.14 #3.14
num14 = -1.732 #-1.732
整数和浮点数在计算机内部存储的方式是不同的, 整数运算永远是精确的( 除法难道也是精确的? 是的! ), 而浮点数运算则可能会有四舍五入的误差.
经典代码:
print(0.1+0.2)
其输出结果为:
0.30000000000000004
这是因为计算机的浮点数表示方式导致的. 由于0.1和0.2的精确度不够, 因此它们的加法结果并不是精确的. 计算机采用一种叫做”浮点数舍入”的方法来解决这个问题.
复数
复数用来表示复数数值, 即有实数部分和虚数部分的数值. 在Python中, 复数由实数部分和虚数部分构成, 并用”j”或”J”表示虚数部分.
num15 = 3 + 4j #3 + 4j
num16 = 2 - 5j #2 - 5j
数据计算
Python支持多种运算符, 包括:
- 加法:
+
- 减法:
-
- 乘法:
*
- 除法:
/
- 整除:
//
- 余数:
%
- 幂:
**
- 自增:
+=
- 自减:
-=
注意数值的除法包含两个运算符: /
返回一个浮点数, //
返回一个整数.
在混合计算时,Python会把整型转换成为浮点数.
字符串
字符串是连续的字符序列, 可以是计算机所能表示的一切字符的集合. 与 C 字符串不同的是在Python中, 字符串是不可变的序列, 因此不能修改字符串中的字符, 向一个索引位置赋值,比如 word[0] = 'm'
会导致错误.
表示
单引号, 双引号和三引号都可以用来表示字符串, 但在Python中, 单引号和双引号的作用是相同的.
单引号和双引号的字符序列必须在同一行, 三引号的字符序列可以跨越多行.
str1 = 'Hello, world!' #单引号
str2 = "Python is awesome" #双引号
如果'
本身也是一个字符,那就可以用""
括起来,比如"I'm OK"
包含的字符是I
,'
, m
, 空格, O
, K
这6个字符.
如果字符串内部既包含'
又包含"
怎么办?可以用转义字符\
来标识
str3 = "I'm \"OK\"!"
表示的字符串内容是I'm "OK"!
转义
转义字符是一种特殊的字符, 它告诉解释器下一个字符是一个普通字符, 而不是特殊的含义. 在Python中, 转义字符是\
, 它可以用来表示一些特殊的字符.
\
是续航符,\n
是换行符,\t
是制表符,\\
是反斜杠,\'
是单引号,\"
是双引号,\a
是响铃,\b
是退格,\f
是换页符,\r
是回车符.
如果字符串里面有很多字符都需要转义, 就需要加很多\, 为了简化,Python还允许用r表示内部的字符串默认不转义.
str4 = r'Hello\n world!'
表示的字符串内容是Hello\n world!
, 内部的\n
不会被转义.
字符串索引
字符串是由字符组成的序列, 可以类比为一个数列, 因此可以用索引来访问字符串中的字符. 索引以 0 为开始值, 正数为从头开始的位置, 负数为从尾开始的位置. -1 为从末尾的开始位置.
word = "Python"
print(word[0]) # 输出 'P'
print(word[-1]) # 输出 'n'
字符串长度
字符串的长度是指字符串中字符的个数. 字符串的长度可以使用len()函数来获取.
word = "Python"
print(len(word)) # 输出 6
字符串截取
变量[头下标:尾下标]
索引值以 0 为开始值, 正数为从头开始的位置, 负数为从尾开始的位置. 头下标和尾下标之间用”:”隔开, 省略头下标时默认为0, 省略尾下标时默认为字符串的长度. -1 为从末尾的开始位置.
**注意区间为左闭右开!**
字符串运算
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串, 与之结合的数字为复制的次数.
str_name = 'shiqiforever' # 定义一个字符串变量
print(str_name) # 打印整个字符串
print(str_name[0:-1]) # 打印字符串第一个到倒数第二个字符(不包含倒数第一个字符)
print(str_name[0]) # 打印字符串的第一个字符
print(str_name[2:5]) # 打印字符串第三到第五个字符(包含第五个字符)
print(str_name[2:]) # 打印字符串从第三个字符开始到末尾
print(str_name * 2) # 打印字符串两次
print(str_name + "TEST") # 打印字符串和"TEST"拼接在一起```
输出结果:
shiqiforever
shiqiforeve
s
iqi
iqiforever
shiqiforevershiqiforever
shiqiforeverTEST
注意: Python 没有单独的字符类型,一个字符就是长度为1的字符串
字符串问题我们之后还会涉及.
布尔值
布尔值用来表示真或假, 只有两个值True和False. Python中的布尔值可以转换为数值, True转换为1, False转换为0. 可以用and, or和not运算符进行布尔运算.
bool1 = True
bool2 = False
bool3 = True and False
bool4 = True or False
bool5 = not True
在Python中,对所有的对象都可以进行真值测试, 真值测试的结果是一个布尔值. 真值测试的规则是:
- 数值类型: 零( 包括0, 0.0, 0j )为假, 非零为真.
- 空序列类型: 空序列( 包括字符串, 列表, 元组, 字典等 )为假, 非空序列为真.
- 自定义类型: 如果自定义类型定义了bool()返回False, 或len()方法返回0, 则为假
- 其他类型: 任何对象都为真.
这些数据类型后续会详细介绍.