数据类型、运算符与表达式
对应教学日历:讲次 2
一、基本数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
int | 整数 | 12, 0o12(八进制), 0x12(十六进制) |
float | 浮点数 | 3.2, 3.5e-2, -1.5E3 |
bool | 布尔值 | True(1), False(0) |
complex | 复数 | 3.0+2j |
str | 字符串 | 'hello', "world" |
注意:Python语言没有char类型,单个字符就是长度为1的字符串。
类型检测
type(1) # <class 'int'>
type('1') # <class 'str'>
isinstance(1, int) # True
isinstance(1, str) # False布尔值的算术运算
True + True # 2
True * 3 # 3
False + 1 # 1布尔值可以参与算术运算:True 等价于 1,False 等价于 0。
二、常量与变量
常量
始终保持固定不变的值,如 1, 3.14, "hello", False。Python中没有符号常量,通常用不改变值的变量代替。
变量
使用 del 命令可以删除变量:
age = 3
del age变量引用(重要概念)
Python的变量实质是引用(指向对象的指针):
age = 3
id(age) # 返回对象的内存地址
age = age + 3 # age指向新对象,原对象3被回收
id(age) # 地址改变age = 6
year = 6
age is year # True(小整数缓存,同一对象)
year = 5
age is year # False三、运算符
算术运算符
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
+ | 加 | 3 + 2 | 5 |
- | 减 | 3 - 2 | 1 |
* | 乘 | 3 * 2 | 6 |
/ | 除(返回浮点数) | 7 / 2 | 3.5 |
// | 整除(向下取整) | 7 // 2 | 3 |
% | 取余 | 7 % 2 | 1 |
** | 幂运算 | 3 ** 2 | 9 |
比较运算符
<, <=, >, >=, ==, !=
结果为布尔值 True 或 False。
逻辑运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
and | 与 | age>=18 and age<=60 |
or | 或 | x>1 or x<-1 |
not | 非 | not age<18 |
Python支持链式比较:
age >= 18 and age <= 60
# 等价于
18 <= age <= 60赋值运算符
a, b = 2, 8 # 序列赋值
a += 3 # 等价于 a = a + 3
a *= b + 1 # 等价于 a = a * (b + 1)运算符优先级(从低到高)
or → and → not → > >= < <= == != → + - → * / // % → **
字符比较
'A' <= 'B' # True(比较ASCII码)
ord('A') # 65
chr(65) # 'A'
chr(ord('N') + 32) # 'n'(大写转小写)四、常用内置函数
| 函数 | 功能 | 示例 |
|---|---|---|
type(x) | 返回类型 | type(1) → <class 'int'> |
int(x) | 转整数 | int("123") → 123 |
float(x) | 转浮点 | float("3.14") → 3.14 |
str(x) | 转字符串 | str(123) → "123" |
len(x) | 长度 | len("hello") → 5 |
ord(x) | 字符→ASCII | ord('A') → 65 |
chr(x) | ASCII→字符 | chr(65) → 'A' |
作业示例
手机号码加密(字符串切片)
tele = input("请输入手机号码:")
new = tele[0:3] + "*" * 4 + tele[7:]
print("加密后手机号码:%s" % new)要点:
- 字符串切片
tele[0:3]获取前3位 "*" * 4生成****- 字符串拼接用
+
恺撒密码(字符运算)
plain = input("请输入明文: ")
for p in plain:
if "a" <= p <= "z":
print(chr(ord("a") + (ord(p) - ord("a") + 3) % 26), end='')
elif "A" <= p <= "Z":
print(chr(ord("A") + (ord(p) - ord("A") + 3) % 26), end='')
else:
print(p, end="")要点:
ord()获取字符的ASCII码chr()将ASCII码转回字符% 26实现字母循环(z后面是a)
作业重点
- Python没有char类型,单个字符就是长度为1的字符串
- 布尔值
True等价于1,False等价于0,可参与算术运算 //是整除(向下取整),/是真除(返回浮点数)- 链式比较
18 <= age <= 60等价于age>=18 and age<=60 - 变量是引用,
id()查看地址,is判断是否同一对象 - 字符比较基于ASCII码:
'A'= 65,'a'= 97