数据类型、运算符与表达式

对应教学日历:讲次 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 等价于 1False 等价于 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 + 25
-3 - 21
*3 * 26
/除(返回浮点数)7 / 23.5
//整除(向下取整)7 // 23
%取余7 % 21
**幂运算3 ** 29

比较运算符

<, <=, >, >=, ==, !=

结果为布尔值 TrueFalse

逻辑运算符

运算符含义示例
andage>=18 and age<=60
orx>1 or x<-1
notnot 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)

运算符优先级(从低到高)

orandnot> >= < <= == !=+ -* / // %**

字符比较

'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)字符→ASCIIord('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 等价于 1False 等价于 0,可参与算术运算
  • // 是整除(向下取整),/ 是真除(返回浮点数)
  • 链式比较 18 <= age <= 60 等价于 age>=18 and age<=60
  • 变量是引用,id() 查看地址,is 判断是否同一对象
  • 字符比较基于ASCII码:'A' = 65, 'a' = 97