14.if选择结构

python
"""
if选择结构基本语法
if 条件判断:
条件为True,执行下方缩进代码
如果条件不成立,则不执行下方缩进代码
"""
age = 21
if age <= 35 :
print("还没到35岁呢,别怕被裁员了,心放宽")
# 下方没有缩进,则代表和if语句没有任何关系,无论if是否成立,都会执行下方代码
print("信不信,我可以一直输出!")

📝 代码总结
- 核心知识点 :单分支
if条件结构 - 实现逻辑:评估条件表达式,为真则执行缩进代码块;非缩进代码不受条件控制
- 关键语法 :
if 条件:+ 缩进代码块 - 功能作用:实现程序的基础流程控制,演示 Python 严格依赖缩进划分代码作用域的特性
15.if选择结构结合input

python
# 定义一个可输入变量,来进行条件判断!
age = int(input("请输入你的年龄:"))
if age >= 35:
print("你被裁员了!")


📝 代码总结
- 核心知识点 :
if结构与动态输入结合 - 实现逻辑:将用户输入转为整数后作为条件判断依据,实现动态分支执行
- 关键语法 :
if int(input()) >= 值: - 功能作用:展示条件判断在实际交互场景中的应用,使程序具备根据用户输入做出不同响应的能力
16.if_else选择结构

python
"""
if 条件判断:
条件为 True,则执行下方缩进代码
else:
条件为 False,则执行else下方缩进代码
案例:接收用户年龄,大于等于 35 则正常上班;不满足条件,则被公司优化,回家种地。
"""
age = int(input("恭喜你运行此程序,请输入您的年龄:"))
if age >= 35:
print("您被我们优化了,您太老了,请前往人事部门,可以回家享福种地去了。")
else:
print("哈哈,不要摸鱼了,小心出事情。")


📝 代码总结
- 核心知识点 :双分支
if...else结构 - 实现逻辑 :条件成立执行
if块,不成立则必定执行else块,二者必选其一 - 关键语法 :
if 条件:\n 代码\nelse:\n 代码 - 功能作用:处理非此即彼的二元逻辑场景,完善条件控制的覆盖范围
17.if_elif_else多选择结构

python
"""
① 如果年龄小于 18 的情况为童工年龄区间,不合法;
② 如果年龄在 18-35 岁之间为奋斗年龄区间;
③ 大于等于 35 岁为优化年龄区间。
第一个条件 age < 18
第二个条件 18 <= age < 35
第三个条件 age >= 35
"""
age = int(input("怎么又在偷摸运行程序来摸鱼?请输入您的年龄:"))
if age < 18:
print("您怎么还未成年,您现在是童工年龄区间,谁把你招进来的,不合法,别让我把丢出去。")
elif 18 <= age < 35:
print("哈哈,摸鱼被我抓到了吧,请速度回到工作之中,不然我就调用系统工具截图,并发送你至上层邮箱了")
else:
print("老爷子,您处于我们公司优化年龄区间了,请自觉提出离职,谢谢!")



📝 代码总结
- 核心知识点 :多分支
if...elif...else结构 - 实现逻辑 :自上而下依次评估条件,命中第一个为真的分支后执行并跳出,全不匹配则执行
else - 关键语法 :
if...elif 条件:...else:...,支持链式比较18 <= age <= 60 - 功能作用:处理多区间、互斥的业务逻辑,演示 Python 特有的连续比较语法,提升条件判断的表达力
18.基于if_elif_else选择结构的猜拳游戏

python
"""
游戏规则:人机大战
有两个角色:player 玩家角色、computer 电脑角色
玩家手工出拳(可以选择石头 1、剪刀 2、布 3)
电脑要求随机出拳(随机 random)
进行条件判断,大概三种情况:玩家获胜、平局、电脑获胜
思路: ① 定义两个变量
② input()
③ 电脑随机出拳(random模块)
④ 使用if...elif...else进行条件判断
难点:如何判断玩家获胜?
player -> 1 -> computer -> 2 -> player win
player -> 2 -> computer -> 3 -> player win
player -> 3 -> computer -> 1 -> player win
"""
import random
print("-" * 5,"欢迎来到人机大战-猜拳游戏","-" * 5)
player = int(input("请输入您的出拳信息(石头 1 剪刀 2 布 3): "))
computer = random.randint(1,3)
if (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
print("恭喜您,您战胜了机器!")
elif player == computer:
print("不可思议,竟然是平局,太厉害了!")
else:
print("加油,不要气馁,下次一定能行!")
print("-" * 5,"欢迎来到人机大战-猜拳游戏","-" * 5)




📝 代码总结
- 核心知识点:逻辑运算符与综合条件判断实战
- 实现逻辑 :结合输入、随机数生成,使用
and/or组合多个相等判断,覆盖游戏胜负平所有情况 - 关键语法 :
and,or,random.randint(), 复杂布尔表达式组合 - 功能作用:将基础语法融会贯通,演示实际项目中的多条件逻辑编排,强化对流程控制与逻辑运算的理解
19.While循环

python
"""
Task:
编写计数器,附带循环条件,循环体内部更新计数器的值(i=i+1)
注意:Python 中没有 i++ i-- 的写法!
"""
i = 1
while i <= 10:
print(i,"我好痛苦,我想财富自由!")
i = i + 1 # 等价于 i += 1

📝 代码总结
- 核心知识点 :
while循环与计数器更新机制 - 实现逻辑 :初始化计数器
i = 1,设定循环条件i <= 10,循环体内打印信息并执行i = i + 1更新计数器 - 关键语法 :
while循环、i = i + 1(等价于i += 1)、print()输出 - 注意事项 :Python 中不支持
i++/i--自增/自减运算符,必须使用赋值语句更新变量 - 功能作用:演示循环结构的三要素(初始化、条件判断、变量更新),培养循环控制思维
20.while循环实现死循环结构

python
# 定义一个死循环结构
while True:
print('-' * 5,"Student Manage System",'-' * 5)
print("1.Add Student")
print("2.Delete Student")
print("3.Modify Student")
print("4.Search Student")
print('-' * 5,"Student Manage System",'-' * 5)
# 引入input()提示用户输入需要的选项,以此来阻塞代码。
choice = int(input("Choice(1-4): "))

📝 代码总结
- 核心知识点 :
while True死循环 + 菜单交互 - 实现逻辑 :无限循环显示学生管理系统菜单,通过
input()获取用户选项(1-4),int()转换后用于后续增删改查功能分支 - 关键语法 :
while True、字符串乘法'-' * n、int(input())、print()格式化输出 - 注意事项 :必须提供退出机制(如
break),否则程序无限运行;用户输入非数字会触发ValueError,建议添加异常处理 - 功能作用:搭建系统交互框架,实现菜单重复显示与用户选择输入
21.for循环实现遍历

python
# for 循环主要用于字符串,列表,元组,字典,集合类型的便利操作
str1 = "KSKBL"
for i in str1:
print(i)
# str1 有多少字符,就会循环多少次。

📝 代码总结
- 核心知识点 :
for循环遍历可迭代对象(字符串) - 实现逻辑 :
for循环逐次取出字符串str1中的每个字符,赋值给变量i,并执行print(i)输出 - 关键语法 :
for 临时变量 in 可迭代对象:、字符串作为序列类型自动支持迭代 - 执行次数:循环次数等于字符串长度(5个字符循环5次)
- 功能作用 :演示
for循环在字符串遍历中的基本用法,理解可迭代对象与循环次数的对应关系
22.Debug调试工具的使用

python
"""
Debug: bug 异常或错误,Debug 就是针对异常或错误进行调试,了解代码执行流程,排查问题。
1.下断点,Debug 一般打在 if/while/for 开头
2.启动 Debug 调试
3.使用 step over 一步一步进行调试
"""
str2 = "123456789"
for i in str2:
print(i)


📝 代码总结
- 核心知识点 :Debug 调试技巧与
for循环遍历 - 实现逻辑 :在循环行(
for i in str2:)设置断点,启动 Debug 后使用 Step Over 逐行执行,观察变量i每次循环的变化及print()输出过程 - 关键语法:断点设置(行号处点击)、Debug 模式启动、Step Over(F8)单步执行
- 调试要点 :断点通常打在循环/条件判断开头,便于观察流程控制;通过 Debug 可清晰看到字符串字符逐个被取出赋给
i的过程 - 功能作用:掌握 Debug 调试工具的使用,理解代码实际执行顺序,学会通过调试排查程序逻辑错误
23.for循环结合range函数实现指定次数循环

python
# 1.循环生成 0-4 ,range(5) -> range(0-5), 5 是 stop 结束值,永远也达不到。
for i in range(5):
print(i)
print('-' * 10 )
for i in range(0,5):
print(i)
print('-' * 10 )
# 2.循环 1-9,默认都是从 0 开始
for i in range(1,10):
print(i)
print('-' * 10 )
# 3.获取 1-10 之间的所有奇数
for i in range(1,11,2):
print(i)
print('-' * 10 )

📝 代码总结
- 核心知识点 :
range()函数三种基本用法 - 实现逻辑 :
range(5):单参数,从0开始到5结束(不包含5),生成0,1,2,3,4range(1,10):双参数,从1开始到10结束(不包含10),生成1-9range(1,11,2):三参数,从1开始到11结束(不包含11),步长为2,生成1,3,5,7,9(奇数)
- 关键语法 :
range(start, stop, step),stop为终止值(取不到),step默认为1 - 注意事项 :
range()生成的序列不包含stop值;步长可为负数实现倒序 - 功能作用 :掌握
range()在不同场景下的灵活运用,实现精确的循环次数控制和数字序列生成
24.for循环实现求解1-100累加

python
"""
sum = 1 + 2 + 3 + ... + 98 + 99 + 100
"""
sum = 0
for i in range(1,101):
sum += i
print(f'1-100累加之和为:{sum}') # 这里记得跳出 for 循环

📝 代码总结
- 核心知识点 :
for循环累加求和 - 实现逻辑 :初始化变量
sum = 0,使用for i in range(1,101)遍历1到100,每次循环执行sum += i累加,循环结束后输出结果 - 关键语法 :
range(1,101)生成1-100序列、累加赋值运算符+=、f-string格式化输出f"{sum}" - 典型应用:计算等差数列之和、统计总和等需要累积计算的场景
- 注意事项 :
print()必须写在循环外部,否则每次循环都会输出中间结果
25.for循环求解1-100偶数的和

python
"""
sum = 2 + 4 + 6 + ... + 96 + 98 + 100
"""
sum1 = 0
sum2 = 0
for i in range(2,101,2):
sum1 += i
for i in range(1,101):
if i%2 == 0:
sum2 += i
print(f'1-100内的偶数之和为: {sum1}')
print(f'1-100内的偶数之和为: {sum2}')

📝 代码总结
- 核心知识点:偶数求和的多种实现方式
- 实现逻辑 :
- 方法一:
range(2,101,2)步长为2,直接遍历所有偶数累加 - 方法二:
range(1,101)遍历1-100,通过if i%2 == 0判断偶数后再累加
- 方法一:
- 关键语法 :
range()步长控制、取模运算符%判断奇偶性、条件筛选累加 - 对比分析:方法一更简洁高效(循环50次),方法二更通用灵活(可修改判断条件实现奇数求和等)
- 功能作用:演示如何通过步长控制或条件判断实现指定规律的数字累加
26.continue与break使用

python
"""
continue:跳过本次循环,继续下一次的循环
break:终止此循环结构
"""
# 背景:5 个苹果,吃第 3 个苹果,发现有虫,不吃了,跳过吃后面的 -> continue
for i in range(1,6):
if i == 3:
print("不吃这个烂苹果,我要吃下面的")
continue
print(f"这是我吃的第{i}个苹果!")
print('*' * 20)
# 背景:5 个苹果,吃第 4 个苹果时候,发现有虫,从此以后有阴影,再也不吃苹果了 -> break
for i in range(1,6):
if i == 4:
print(f"我服了,这是我的第{i}个苹果,吃个苹果,都有虫,我再也不吃水果了。")
break
print(f"这是我吃的第{i}个苹果。")

27.for循环关于内外循环

python
# 定义一个循环,外层循环 2 次,内层循环 3 次,请问:总共循环几次?
for i in range(1,3):
for j in range(1,4):
print('*')
print()
for i in range(1,3):
for j in range(1,4):
print('*',end='\n') # print('*') <=> print('*',end='\n')
print()
for i in range(1,3):
for j in range(1,4):
print('*',end='\t') # \t <=> Tab 看看效果
print()
print("结论一:总循环次数 = 外层循环次数 * 内存循环次数")
print("结论二:执行过程中,外层执行 1 次,内层 完整 1 轮 (类似时钟,分钟移动 1 格,秒钟循环 1 圈)")

📝 代码总结
- 核心知识点:嵌套循环的执行逻辑与次数计算
- 实现逻辑 :外层循环
range(1,3)执行2次,内层循环range(1,4)执行3次,每次内层循环完整执行完毕后外层才进入下一次迭代 - 关键语法 :嵌套
for循环、print()的end参数控制输出格式(\n换行、\t制表符) - 嵌套次数:总循环次数 = 外层次数 × 内层次数 = 2 × 3 = 6次
- 执行规律:外层执行1次,内层完整执行1轮(类似时钟:分针走1格,秒针走完60秒)
- 功能作用 :理解嵌套循环的流程控制,掌握循环总次数的计算方法,学会通过
end参数控制输出排列效果
28.for循环实现直角三角形的打印

bash
for i in range(1,6):
for j in range(i):
print("*",end="\t")
print() # 等价于 print('',end="\n")

📝 代码总结
- 核心知识点:嵌套循环实现三角形图案输出
- 实现逻辑 :外层循环控制行数(1-5行),内层循环控制每行打印的星号数量(第i行打印i个星号),每行结束后执行
print()换行 - 关键语法 :内层循环范围
range(i)(i=1时生成1次,i=2时生成2次,依此类推)、end="\t"星号间用制表符分隔、空print()实现换行 - 执行规律:第1行打印1个星号,第2行打印2个星号...第5行打印5个星号
- 功能作用:演示如何利用循环变量控制内层循环次数,实现规律性图形输出
29.for循环实现倒直角三角形的打印

bash
for i in range(1,6):
for j in range(6 - i):
print("*",end="\t")
print()

📝 代码总结
- 核心知识点:嵌套循环实现倒三角形图案输出
- 实现逻辑 :外层循环控制行数(1-5行),内层循环控制每行星号数量(第i行打印
6-i个星号),每行结束后执行print()换行 - 关键语法 :内层范围
range(6-i)实现递减数量控制(i=1时5个,i=2时4个...i=5时1个) - 执行规律:第1行打印5个星号,第2行打印4个星号...第5行打印1个星号
- 功能作用:演示如何通过循环变量与固定值的数学运算(总数-当前行数),实现递减规律的图案输出
30.for循环-九九乘法表

bash
for i in range(1,10):
for j in range(1,i+1):
print(f"{i}x{j}={i*j}",end="\t")
print()

📝 代码总结
- 核心知识点:嵌套循环实现九九乘法表
- 实现逻辑 :外层循环控制乘数
i(1-9行),内层循环控制被乘数j(从1到i),每行打印i x j = i*j的算式,行末换行 - 关键语法 :内层范围
range(1, i+1)实现每行星式数量递增、f-string格式化算式、end="\t"实现列对齐 - 数学规律 :第
i行有i个算式,共9行总计45个算式 - 功能作用:双重循环控制实战,掌握循环变量动态决定内层循环次数,实现乘法表的阶梯式输出
31.关于单双引号的使用
在
shell编程中,''单引号直接会进行原样输出;但在
python中,''和""都会将变量的值输出

bash
str1 = 'hello'
str2 = "world"
print(str1,type(str1))
print(str2,type(str2))

📝 代码总结
- 核心知识点:字符串数据类型与type()函数的使用
- 实现逻辑:分别使用单引号和双引号定义两个字符串变量,打印输出字符串内容和其数据类型
- 关键语法 :单引号
'hello'和双引号"world"定义的字符串等价、type()获取变量数据类型 - 输出结果 :
hello <class 'str'>和world <class 'str'> - 功能作用 :验证Python中单引号与双引号定义字符串的等效性,学习使用
type()检查数据类型
32.索引下标及索引越界

bash
name = 'abcdef'
print(name[0])
print(name[1])
print(name[2])
print(name[3])
print(name[4])
print(name[5])
print("-" * 10)
print(name[6]) # 报错! -> 输出 index out of range 索引越界

📝 代码总结
- 核心知识点:字符串索引访问与索引越界错误
- 实现逻辑 :字符串
name = 'abcdef'长度为6,有效索引范围为0到5,逐个输出索引0-5成功,尝试输出索引6时触发异常 - 关键语法:字符串名[索引] 获取指定位置字符、索引从0开始计数
- 错误类型 :
IndexError: string index out of range(索引越界) - 注意事项 :字符串长度为
n时,最大索引值为n-1,访问n或更大索引会报错 - 功能作用:理解Python中索引的起始规则(0-based indexing),掌握索引越界错误的产生原因与避免方法
33.字符串切片截取操作

bash
# 定义一个字符串(默认情况,字符串,列表,元组都支持切片)
num = '0123456789'
# 0 1 2 3 4 5 6 7 8 9
# -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
# 切片操作里面的数字为索引下标数字
# 切片操作如下:比较比较
print(num[3:6]) # 345
print(num[3:6:1]) # 345
print(num[2:5]) # 234
print(num[2:5:1]) # 234
print(num[:5]) # 01234
print(num[1:]) # 123456789
print(num[:]) # 0123456789
print(num[::2]) # 02468
print(num[::-1]) # 9876543210 -> 相当于字符串翻转
print(num[-4:-2]) # 67
print(num[:-1]) # 012345678

📝 代码总结
- 核心知识点:字符串切片操作
- 实现逻辑 :通过
[start:stop:step]语法从字符串中提取子串,start为起始索引,stop为结束索引(不包含),step为步长 - 关键语法:索引从0开始、支持负索引(-1表示最后一个字符)、省略start默认开头、省略stop默认结尾、step为负数实现反向切片
- 注意事项:stop位置对应的字符不会被包含
- 功能作用:掌握字符串切片的核心语法规则,实现灵活的子串提取与字符串变换
34.find关键词

bash
"""
字符串.find(关键词)
找到:就返回关键词所在位置的起始下标
找不到:就返回 -1
"""
str1 = 'hello world'
print(str1)
print(str1.find('hello')) # h -> 0
print(str1.find('world')) # w -> 6
print(str1.find('xxxxx')) # 返回 -1

📝 代码总结
- 核心知识点 :字符串
find()方法查找子串 - 实现逻辑:在字符串中搜索指定关键词,返回首次出现的起始索引,找不到返回 -1
- 关键语法 :
字符串.find(关键词)、索引从0开始计数 - 返回值规则 :找到返回起始下标(如
'hello'在索引0位置)、找不到返回 -1 - 功能作用:判断子串是否存在于字符串中,并获取其位置信息
35.获取文件名及后缀find()与rfind()

bash
"""
find():从左向右查找,查找第一个满足条件的结果
rfind():从左向右查找,查找最后一个满足条件的结果
"""
file = 'error.log'
index = file.rfind('.')
print("index 的索引下标为:",index)
name = file[:index]
postfix = file[index:]
print(f'文件整体名称为:{file}')
print(f'文件前缀:{name}')
print(f'文件后缀:{postfix}')

📝 代码总结
- 核心知识点 :
find()与rfind()的区别、字符串切片提取文件信息 - 实现逻辑 :
rfind('.')从右向左查找最后一个点号的位置,通过切片分离文件名和后缀 - 关键语法 :
rfind()返回指定字符最后一次出现的索引、file[:index]取前缀、file[index:]取后缀(包含点号) - 对比说明 :
find()返回第一个匹配项索引,rfind()返回最后一个匹配项索引 - 应用场景:提取文件后缀名、处理路径或带有多处相同分隔符的字符串
- 功能作用 :掌握
rfind()从右查找的特性,结合切片实现文件名的拆分处理
36.replace使用案例

bash
"""
字符串.replace(old,new,次数-可省略)
省略代表全部替换
"""
str1 = 'hello linux and linux'
print(str1)
print(str1.replace('linux','python',1)) # 替换遇到的第一个
print(str1.replace('linux','python')) # 替换所有

📝 代码总结
- 核心知识点 :字符串
replace()方法的替换操作 - 实现逻辑:将字符串中的旧子串替换为新子串,第三个参数指定替换次数,省略则替换所有匹配项
- 关键语法 :
replace(old, new, count)- old为被替换内容,new为替换内容,count为最大替换次数 - 返回值特性:返回新字符串,原字符串不变(字符串不可变)
- 功能作用:掌握字符串替换语法,理解替换次数参数的作用及原字符串不可变特性
37.split与join使用案例

bash
"""
字符串.split(分隔符):将字符串按照分隔符进行切割,返回元素组成一个列表类型
拼接字符串.join(列表):将列表中的每一个元素通过拼接字符,拼成一个完整的字符串
"""
str1 = 'linux-mac-windows'
n1 = str1.split('-')
print(n1)
str2 = ['DeepSeek','ChatGPT','GLM',]
n2 = '-'.join(str2)
print(n2)

📝 代码总结
- 核心知识点 :
split()分割字符串与join()拼接列表 - 实现逻辑 :
split('-')按分隔符-将字符串切分为列表;'-'.join(str2)用-将列表元素拼接成字符串 - 关键语法 :
字符串.split(分隔符)返回列表、分隔符.join(列表)返回字符串 - 对称关系 :
split()和join()互为逆操作 - 功能作用:掌握字符串与列表之间的相互转换,实现数据解析与格式化输出
38.strip是使用案例

bash
"""
字符串.strip():删除字符串两边的空格
字符串.strip(指定字符):删除字符串两边指定的字符
"""
username = ' admin '
if username.strip() == 'admin':
print(f'用户所输内容旁边的字符串已被消失')
else:
print('失败'
📝 代码总结
- 核心知识点 :
strip()方法删除字符串两边的指定字符(默认为空格) - 实现逻辑 :
username.strip()去除用户名两边的空格后,与字符串'admin'进行比较判断 - 关键语法 :
strip()默认删除空格、strip(指定字符)删除两边指定的字符、lstrip()只删左边、rstrip()只删右边 - 注意事项 :
strip()只删除首尾字符,不处理字符串内部的字符 - 功能作用:处理用户输入时的意外空格,验证清理后的字符串是否匹配预期内容