数据存储与运算
1.字面量与变量
1.1 字面量
在程序中,直接书写并表示固定值的常量数据被称为字面量(Literal)。字面量是源代码中直接出现的数值或字符串,不需要通过变量引用。
举例
如:整数 18、浮点数 8.5、负数 -5、字符串 "Hello World"
类型及书写格式
| 字面量类型及书写格式 | ||
|---|---|---|
| 字面量类型 | 说明 | 书写格式 |
| 数字类型 | 整数(int) | 10、18、-5、0 |
| 浮点数 / 小数(float) | 8.5、3.14、1.0、-3.5 | |
| 布尔(bool) | 表示逻辑真假值 | True、False |
| 字符串(str) | 描述文本的一种数据类型 | "人生苦短,我用 Python" |
| 空值(NoneType) | 表示空值或无值,仅包含一个值 None | None |
| 数据容器 | 存储多项数据的容器类型 | 列表、元组、集合、字典 |
说明
布尔类型本质就是数字类型,在涉及到数学运算时,会自动将 True 转为1,False 转为0。
1.2 变量
程序中用来存储单个数据的容器,通常会把经常发生变化的数据存储在变量中。
注意
变量是存储数据的容器(内存空间),而非容器中存储的数据本身。
1.2.1 定义格式
变量名 = 变量的值
- 变量名:每一个容器(空间)的名字
- 赋值:表示将等号右侧的值,赋予左侧的变量
- 变量值:每一个变量都有自己存储的值(数据)
说明
Python 是动态类型语言,在程序运行时才进行类型检查,变量的类型可以在程序运行过程中改变(一个变量可以接收不同类型的值)。
1.2.2 注意事项
- 一个变量只能存储一个值
- 变量定义的时候必须赋值才可以使用
- 一条语句可以定义多个变量,也可以连续赋值(a,b = 1,"Python")
1.3 标识符
程序员在代码中为变量、函数、类等元素所起的名字。
1.3.1 命名规则(规定)
- 只能包含字母(a-z,A-Z)、数字(0-9)、下划线(_)
- 不能以数字开头
- 不能使用关键字:True、False、None、and、or、not、if、else、elif、for、while 等
- 严格区分大小写,比如:age,Age,AGE 是三个变量
1.3.2 命名规范(变量)
- 见名知意
- 多个部分使用下划线连接
- 英文字母全小写
1.3.3 PEP8
PEP 是 Python 社区的核心技术文档和标准化机制,而 PEP8 是 Python 的代码风格指南。
1.4 案例
- 现有两个变量,分别为:a = 10,b = 20,现需要将这两个变量值交换,然后输出到控制台。
a = 10
b = 20
temp = a
a = b
b = temp
print(a, b)- 现有三个变量,分别为:a = 100,b = 200,c = 300,现需要将这三个变量值进行交换,将a,b,c的值分别赋值给c,a,b,并将其输出到控制台。
a, b, c = 100, 200, 300
temp = c
c = a
a = temp
temp = b
b = a
a = temp
print(c, a, b)2.常见数据类型
2.1 常见的基础数据类型
| 标准名称 | 描述 | 说明 |
|---|---|---|
| int | 整数 | 数字类型,存放整数,如: 10 -5 |
| float | 浮点数 | 浮点数类型,存放小数 |
| str | 字符串 | 用引号引起来的都是字符串,如: "Python" |
| bool | 布尔 | 布尔类型,描述真和假,如: True False |
| NoneType | 空值 | 表示空或无值,仅包含一个值 None |
2.2 查看数据的实际类型
通过 type() 语句来得到数据的类型,具体语法为:type(要查看类型的数据)
通过 isinstance() 检查数据是否属于指定的类型,返回的是一个bool值,具体语法为:isinstance(数据, 类型)
num = -100
print(type(num))
print(isinstance(num, int))
print(isinstance(num, float))
print(isinstance(num, bool))说明
变量本身是没有类型的,type(变量) 输出的类型是 变量中存储的数据 的类型。
3.字符串
字符:是文本世界的基本单位,一个字母、一个数字、一个标点符号、一个汉字等都是一个字符。
3.1 定义方式
- 双引号定义
s1 = "Hello"- 单引号定义
s2 = 'It\'s very interesting'相关信息
单引号定义的字符串内若包含单引号本身,需用反斜杠 \ 转义,否则 Python 会将中间的引号误判为字符串结束符。
- 三引号定义
s3 = """
Hello:
欢迎大家进入Python课程的学习
"""3.2 转义字符
转义字符是以反斜杠(\)开头的特殊字符,用于表示一些无法直接输入的字符或具有特殊含义的字符。
| 转义字符 | 含义 |
|---|---|
\n | 换行 |
\t | 水平制表符(Tab) |
\\ | 反斜杠本身 |
\' | 单引号 |
\" | 双引号 |
3.3 字符串拼接
使用 + 可以将多个字符串拼接在一起。相邻的字符串字面量(不含变量)即使不用 +,Python 也会自动拼接为一个字符串。
s1 = "人生苦短" + "我用Python" "OK"
print(s1)注意
+ 号可以用来拼接两个字符串,但是无法将非字符串与字符串进行拼接(非字符串类型需要转换为字符串类型)。
3.4 字符串格式化
将变量嵌入字符串,避免大量 + 拼接。
- % 格式化:通过
%占位符在字符串中为变量预留位置,%s表示将变量转为字符串填入。
s1 = "人生苦短"
s2 = "我用Python"
s3 = 111
print("吉姆·罗杰:%s, %s, %s" % (s1, s2, s3))注意
占位符与变量需一一对应,数量不一致会报错。
- f-string 格式化(推荐):
f"内容{变量}"直接在字符串中嵌入变量,更直观高效。
s1 = "人生苦短"
s2 = "我用Python"
s3 = 111
print(f"吉姆·罗杰:{s1}, {s2}, {s3}")4.输入与输出
4.1 input 输入
input(提示信息) 接收键盘输入,按下回车后程序继续执行。返回值始终为字符串类型,如需参与数学运算需先转换类型。
name = input("请输入您的姓名:")
age = input("请输入您的年龄:")
print(f"您的姓名是{name}, 您的年龄是{age}")注意
无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型 。
4.2 print 输出
print(数据...) 将内容输出到控制台,支持同时打印多个数据(用逗号分隔)。
num1 = input("请输入数字a:")
num2 = input("请输入数字b:")
# input 返回的是字符串,需要用 int() 转换后才能计算
print(f"两数之和为:{int(num1) + int(num2)}")运行结果:
请输入您的姓名:Nanxu
请输入您的年龄:22
您的姓名是Nanxu, 您的年龄是22
请输入数字a:20
请输入数字b:30
两数之和为:504.3 类型转换
Python 提供了内置函数在常用数据类型之间进行转换:
| 函数 | 说明 | 示例 |
|---|---|---|
int(x) | 将 x 转为整数 | int("20") → 20 |
float(x) | 将 x 转为浮点数 | float("3.14") → 3.14 |
str(x) | 将 x 转为字符串 | str(100) → "100" |
bool(x) | 将 x 转为布尔值 | bool(0) → False,bool(1) → True |
5.运算符
5.1 算术运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
+ | 加 | 10 + 4 → 14 |
- | 减 | 10 - 4 → 6 |
* | 乘 | 10 * 4 → 40 |
/ | 除 | 10 / 4 → 2.5 |
// | 整除(向下取整) | 10 // 4 → 2 |
% | 取余 | 10 % 4 → 2 |
** | 幂运算 | 10 ** 4 → 10000 |
print("10 + 4 =", 10 + 4)
print("10 - 4 =", 10 - 4)
print("10 * 4 =", 10 * 4)
print("10 / 4 =", 10 / 4)
print("10 // 4 =", 10 // 4)
print("10 % 4 =", 10 % 4)
print("10 ** 4 =", 10 ** 4)运行结果:
10 + 4 = 14
10 - 4 = 6
10 * 4 = 40
10 / 4 = 2.5
10 // 4 = 2
10 % 4 = 2
10 ** 4 = 10000运算符优先级
幂运算 ** > 乘除取余整除 > 加减。同级从左到右。
0.1 + 10 / 4 ** 2 先算 4 ** 2 = 16,再 10 / 16 = 0.625,最后 0.1 + 0.625 = 0.725
5.2 赋值运算符
把右边的值或表达式结果,赋给左边的变量。
| 运算符 | 描述 | 示例 |
|---|---|---|
= | 赋值 | num = 1 + 2,num 结果为 3 |
+= | 加法赋值 | num += 2 → num = num + 2 |
-= | 减法赋值 | num -= 2 → num = num - 2 |
*= | 乘法赋值 | num *= 2 → num = num * 2 |
/= | 除法赋值 | num /= 2 → num = num / 2 |
%= | 取余赋值 | num %= 2 → num = num % 2 |
//= | 整除赋值 | num //= 2 → num = num // 2 |
**= | 幂赋值 | num **= 2 → num = num ** 2 |
num = 85
num += 10
print("num += 10 后,num =", num)
num -= 10
print("num -= 10 后,num =", num)
num *= 10
print("num *= 10 后,num =", num)
num /= 10
print("num /= 10 后,num =", num)
num //= 10
print("num //= 10 后,num =", num)
num %= 10
print("num %= 10 后,num =", num)
num **= 10
print("num **= 10 后,num =", num)运行结果:
num += 10 后,num = 95
num -= 10 后,num = 85
num *= 10 后,num = 850
num /= 10 后,num = 85.0
num //= 10 后,num = 8.0
num %= 10 后,num = 8.0
num **= 10 后,num = 1073741824.05.3 比较运算符
比较运算符(关系运算符)用于比较两个值的大小关系,结果返回布尔值:True 表示成立,False 表示不成立。
| 运算符 | 描述 | 示例 |
|---|---|---|
== | 等于 | a == b,a 等于 b 时为 True |
!= | 不等于 | a != b,a 不等于 b 时为 True |
> | 大于 | a > b,a 大于 b 时为 True |
>= | 大于等于 | a >= b,a 大于或等于 b 时为 True |
< | 小于 | a < b,a 小于 b 时为 True |
<= | 小于等于 | a <= b,a 小于或等于 b 时为 True |
5.4 逻辑运算符
逻辑运算符是用于连接多个条件(布尔)表达式(其值为“真”或“假”),并返回一个最终布尔结果的运算符。
| 运算符 | 描述 | 示例 |
|---|---|---|
and | 与 | 两边都为 True,结果才为 True |
or | 或 | 任一边为 True,结果即为 True |
not | 非 | 取反:True ↔ False |
