python 零基础入门教程第 2 章. 基本数据类型 (一)

本贴最后更新于 1544 天前,其中的信息可能已经东海扬尘

一、什么是数据类型

编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算。

每种编程语言都会有一些基本的数据类型用来表示现实世界中的常见信息。

Python中的常见数据类型如下

数值类型

名称 描述
int(整数) 数学概念中的整数
float(浮点数) 数学概念中的实数
complex(复数) 数学概念中的复数

序列类型

名称 描述
str(字符串() 字符串是字符的序列表示,用来表示文本信息
list(列表) 列表用来表示有序的可变元素集合。例如表示一个有序的数据组。
tuple(元组) 元组用来表示有序的不可变元素集合。

散列类型

名称 描述
set(集合) 数学概念中的集合,无限不重复元素的集合
dict(字典) 字典是无序键值对的集合。用来表示有关联的数据,例如表示一个人的基本信息。

其他类型

名称 描述
bool(布尔型) bool型数据只有两个元素,True表示真,False表示假。用来表示条件判断结果。
None None表示空。

二、数值类型

1. 整数类型(int)

python中整数类型用int表示,与数学中的整数概念一致

age = 18

其中age是变量名,= 是赋值运算符,18是值。

上面的代码表示创建一个整数18然后赋值给变量age。

1.变量

在程序运行过程中会有一些中间值,在稍后的执行中会用到,这时可以将这些中间值赋值给变量,然后在后面的代码中通过调用这些变量名来获取这些值。可以简单的理解为给这些值取一个别名,这个别名就代表这个值。

变量的命名规则:

  1. 由大小写字母A-Za-z,数字0-9和下划线_组成
  2. 不能以数字开头
  3. 不能是关键字
  4. 变量名大小写敏感
# 正确的案例
lucky_num = 88
lucky_num2 = 888
# 错误的案例
1lucky_num = 88
# 上面的age 和 Age是两个不同的变量
Age = 19

python官方占用了一些变量名作为程序的关键字,总共35个,这些关键字不能作为自定义变量名使用。

import keyword
print(keyword.kwlist)

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

2.赋值运算符

在python中=是赋值运算符,而不是数学意义上的等于号。python解释器会先计算=右边的表达式,然后将结果复制给=左边的变量。

res = 1           # 定义变量res赋值为1
res = res + 1     # 先计算res + 1 再赋值给变量res
res               # res的值为2

运行结果:

2

3.type函数和print函数

python提供了内建函数type用来查看值或者变量的类型。

只需要将变量或者值作为参数传入type函数即可。

type(age)

运行结果

int

type(18)

运行结果:

int

print函数用来在屏幕上输出传入的数据的字符串表现形式,是代码调试最重要的函数。

print(age)
print(type(age))
# 注意交互式输出和print函数输出的区别

运行结果:

18
<class 'int'>

4.整数的常见表示形式

在python中整数最常见的是10进制整数,也有二进制,八进制和十六进制。

a = 10  # 十进制
print('a的类型为:', type(a), a)

a的类型为: <class 'int'> 10

b = 0b1110  # 二进制
print('b的类型为:', type(b),b)

b的类型为: <class 'int'> 14

c = 0o57    # 八进制
print('c的类型为:', type(c),c)

c的类型为: <class 'int'> 47

d = 0xa5c   # 十六进制
print('d的类型为:', type(d), d)

d的类型为: <class 'int'> 2652

5.整数的取值范围

python中整数类型的理论取值范围是[-无穷,无穷],实际取值范围受限于运行python程序的计算机内存大小。

2. 浮点数类型(float)

python中浮点数数用float表示,与数学中的实数概念一致,也可以理解为有小数。

a = 0.0
print('a的类型为:', type(a))

a的类型为: <class 'float'>

1.浮点数的表现形式

在python中浮点数可以表示为a.b的格式,也可以表示为小写或大写E的科学计算法。例如:

a = 0.0
print('a的类型为:', type(a))

a的类型为: <class 'float'>

# 小数部分为零可以省略不写
b = 76.
print('b的类型为:', type(b))

b的类型为: <class 'float'>

c = -3.1415926
print('c的类型为:', type(c))

c的类型为: <class 'float'>

d = 9.5e-2
print('d的类型为:', type(d))

d的类型为: <class 'float'>

思考:

浮点数可以表示所有的整数数值,python为何要同时提供两种数据类型?

相同的操作整数要比浮点数快5-20倍

2.数学运算符

与数学中的常用运算符一致

运算符 描述
+ 加法运算符1+1
- 减法运算符3-2
* 乘法运算符9*9
/ 除法运算符9/3,除法运算后的结果一定为float类型
// 整除运算符10/3,也称为地板除向下取整
% 取模运算符10%3,表示10除以3取余数
** 幂次运算符2**3,表示2的3次幂
() 括号运算符,括号内的表达式先运算 (1+2)* 3

注意一个浮点数和一个整数进行运算后的结果一定为浮点数

2+1.0

3.0

9/3 # 除法运算的结果一定为float类型

3.0

9//2 # 地板除,向下取整

4

3.组合赋值运算符

赋值运算符与算术运算符可以组合使用,注意算术运算符要写在前面且中间不能有空格。

运算符 描述 实例
= 等于-简单的赋值 c = a + b print(c) # 30
+= 加等于 c += a等同于c = c + a
-= 减等于 c -= a等同于c = c - a
*= 乘等于 c *= a等同于c = c * a
/= 除等于 c /= a等同于c = c/a
%= 取余等于 c%=a等同于c = c%a
**= 幂等于 c ** =a等同于c = c ** a
//= 取整除等于 c//=a等同于c = c//a

体现了程序员的"懒惰",这种懒惰大力提倡,使得代码简洁和高效。

a = 1
a += 2  #  a = a+2
a 

3

4. 浮点数的不精确性

整数和浮点数在计算机中的表示不同,python提供无限制且准确的整数计算,浮点数却是不精确的,例如:

0.2+0.1

0.30000000000000004
根据sys.float_info.dig的值,计算机只能提供15个数字的准确性。浮点数在超过15位数字计算中产生的误差与计算机内部采用二进制运算有关。

import sys

print(sys.float_info.dig)

15

思考:

3.1415926535897924*1.23456789 的计算怎么准确

拓展:高精度浮点运算类型
import decimal
a = decimal.Decimal('3.141952653')
b = decimal.Decimal('1.23456789')
print(a * b)

3.87895385729411217

5. 浮点数和整数的相互转化

int,float是python的内置函数,通过它们可以对浮点数类型和整数类型相互转化

a = 1.9
# 转化为整数
# 通过调用int函数,提取浮点数的整数部分
b = int(a)
print(b, type(b))

1 <class 'int'>

c = 2
# 转化为浮点数
# 通过调用float函数,将整数转化为小数部分为0的浮点数
d = float(c)
print(d, type(d))

2.0 <class 'float'>

3.复数

科学计算中的复数。

a = 12.3+4j
print('a的类型为:', type(a))
# 运行结果:a的类型为: <class 'complex'>
print(a.real)
print(a.imag)

a的类型为: <class 'complex'>
12.3
4.0

  • Python
    105 引用 • 237 回帖 • 2 关注
2 操作
877649301 在 2020-09-28 17:00:40 更新了该帖
877649301 在 2020-09-28 14:35:10 更新了该帖
回帖
请输入回帖内容 ...