1. 为什么 input返回的是“文本”?
上一课埋了个伏笔:input()不管输入什么,得到的都是字符串(str)。那么“文本”和“数字”在Python里到底有什么区别?打个比方:
2. 字符串(str)的索引与切片
夏天到了,又到了吃西瓜的时候。圆圆的西瓜怎么打开呢?可以往地上一摔,给它摔开;可以给他一拳,把它砸开
。这样打开西瓜,总要浪费些,也比较费事,所以多数时候我们还是用刀去切开习惯。
言归正传。
字符串就是一堆字符按顺序排好队。每个字符都有自己的编号(索引),从 0开始数。
正向索引(从左往右):0, 1, 2, 3, ...
反向索引(从右往左):-1, -2, -3, ...(这招在取最后一个字符时超级好用!)
切片(Slicing)—— 提取子串:语法是 [起始索引 : 结束索引 : 步长]。3. 列表(list)的增删改查
列表是Python中最常用的容器,用方括号 []表示,里面可以放任何类型的数据(数字、字符串,甚至列表本身)。
添加元素(append):列表.append(新元素)→ 永远把新元素追加到末尾。
删除元素(pop):列表.pop()→ 不带参数时,弹出并删除最后一个元素;列表.pop(索引)→ 删除指定位置的元素。
列表切片:和字符串类似,列表[起始:结束]可以截取子列表。但超级区别:列表切片得到的是新列表,且可以通过赋值来批量替换原列表中的元素(如 列表[1:3] = ["新A", "新B"])。
4. 运算符重点:/与 //
| 运算符 | 名称 | 官方说法 | 特点 | 示例 |
|---|
/ | 真除法 | 浮点数除法 | 结果永远是小数(float) | 5 / 2 = 2.5 |
// | 整除 | 地板除法 | 向下取整,只留整数部分 | 5 // 2 = 2 |
% | 取余 | 模运算 | 返回除法的余数 | 5 % 2 = 1 |
技巧:判断一个数n是奇数还是偶数,就用 n % 2 == 0(偶数)还是 == 1(奇数)。这在循环和条件判断中极其常用。
🐍 代码实战
"""数据类型与运算符知识点:字符串索引/切片、列表增删改查、/ 与 // 的区别适配 Python 3.14.6"""print("=" * 50)print("📚 第一部分:字符串的索引与切片")print("=" * 50)# 定义一个字符串course = "Python编程"print(f"原字符串:{course}")print(f"长度(字符个数):{len(course)}") # len()是内置函数,用来求长度# 1. 索引(正向从0开始,反向从-1开始)print(f"\n正向索引[0]:{course[0]}") # 输出:Pprint(f"正向索引[1]:{course[1]}") # 输出:yprint(f"反向索引[-1]:{course[-1]}") # 输出:程print(f"反向索引[-2]:{course[-2]}") # 输出:编# 2. 切片(含左不含右)print(f"\n切片 [0:6]:{course[0:6]}") # 输出:Python(索引0~5)print(f"切片 [6:](取到末尾):{course[6:]}") # 输出:编程print(f"切片 [::2](步长为2):{course[::2]}") # 输出:Pto编(隔一个取一个)print("\n" + "=" * 50)print("📚 第二部分:列表的增删改查")print("=" * 50)# 定义一个空列表,用于存放学生姓名students = []print(f"初始空列表:{students}")# 1. append() —— 追加到末尾students.append("张明")students.append("李红")students.append("王浩")print(f"append三次后:{students}") # 输出:['张明', '李红', '王浩']# 2. pop() —— 弹出并删除(默认删最后一个)last_one = students.pop()print(f"被弹出的最后一位同学:{last_one}")print(f"pop()后的列表:{students}") # 输出:['张明', '李红']# 3. pop(索引) —— 删除指定位置students.pop(0) # 删除索引0(即第一位)print(f"pop(0)删除第一位后:{students}") # 输出:['李红']# 4. 列表切片(截取子列表)# 重置一下列表students = ["赵一", "钱二", "孙三", "周四", "吴五"]print(f"\n重置后的列表:{students}")print(f"切片 [1:4]:{students[1:4]}") # 输出:['钱二', '孙三', '周四'](索引1,2,3)print("\n" + "=" * 50)print("📚 第三部分:/ 与 // 的终极对决")print("=" * 50)a = 17b = 5print(f"变量 a = {a}, b = {b}")print(f"📌 真除法 (a / b) = {a / b}") # 输出:3.4 (永远是浮点数)print(f"📌 整除 (a // b) = {a // b}") # 输出:3 (向下取整,舍弃小数)print(f"📌 取余 (a % b) = {a % b}") # 输出:2 (余数)# 验证一个经典陷阱print("\n⚠️ 考场高频陷阱验证:")print(f"4 / 2 = {4 / 2}") # 输出 2.0 (不是2!千万不要以为它是整数)print(f"4 // 2 = {4 // 2}") # 输出 2
课后一定要自己运行下代码,对比输出结果,去加深理解。
✍️ 微提醒
切片的“结束索引”陷阱:s[0:3]很多人误以为取0~3共4个,其实是取 0,1,2共3个!记住“含左不含右”,或者死记公式:取出的元素个数 = 结束索引 - 起始索引(如 3-0=3个)。
pop()返回被删除的值:如果你写 x = list.pop(),x里存的就是被丢掉的那个元素。如果只是单纯想删掉末尾元素且不需要知道它是什么,直接写 list.pop()即可。
/的结果永远是浮点数:哪怕 4 / 2在数学上等于整数2,但在Python里它返回的是 2.0。如果后续拿它当索引去取列表元素,会直接报错(索引必须是整数)。这时候就需要用 //或者 int()转换。