【Python】基础语法入门(二)

前言
在上一篇基础语法(一)中,我们搭建了变量、运算符、输入输出等“编程地基”,但程序还是只能按固定顺序“从头到尾”执行。在这一篇中,我们将聚焦Python的核心逻辑控制,条件语句和循环语句,以帮你解锁“根据情况做选择”和“重复执行某项任务”的关键能力,让程序真正具备“解决实际问题”的灵活度!
一、程序的3种核心执行结构
所有编程场景的执行逻辑,都离不开3种基础结构:
- 顺序结构:程序从上到下依次执行(基础语法一已掌握)。
- 选择结构(条件语句):程序按条件判断,走不同的执行分支(比如“成绩≥60为及格,否则为不及格”。
- 循环结构(循环语句):程序重复执行某段代码,直到满足结束条件(比如“打印1-100所有数字”)。
二、条件语句
条件语句的核心是“分支逻辑”,程序会根据条件的“真(True)/假(False)”,走向不同的执行路径。
2.1 核心语法
Python的条件语句语法简洁,但有两个特殊规则,和C/C++、Java等语言差异有点大:
- 条件表达式后不加括号,结尾必须跟
:(冒号)。 - 代码块用“缩进”(4个空格或1个Tab)划分归属,而非为
{}。 - 多分支用
elif(else if的简写),不用重复写else,使得逻辑更清晰。
(1)单分支:if语句(满足条件才执行)
语法:
if 条件: 缩进的代码块(条件为真时,才执行代码块)# 示例:判断是否成年,满足条件才提示 age =int(input("请输入你的年龄:"))if age >=18:print("你已成年,可独立办理业务~")print("记得带好身份证哦!")# 同一缩进,同属if代码块(2)双分支:if-else语句(二选一逻辑)
语法:
if 条件: 代码块1 else: 代码块2(条件真执行代码块1,假执行代码块2)# 示例:判断数字奇偶性,非此即彼 num =int(input("请输入一个整数:"))if num %2==0:print(f"{num}是偶数")else:print(f"{num}是奇数")(3)多分支:if-elif-else语句(多选一)
语法:
if 条件1: 代码块1 elif 条件2: 代码块2 else: 代码块3(按顺序判断,满足一个即执行)# 示例:成绩等级判定(贴近实际学习场景) score =int(input("请输入成绩(0-100):"))if score >=90:print("优秀!继续保持~")elif score >=80:print("良好!再努努力就能冲优秀啦~")elif score >=60:print("及格!基础掌握了,还要多练习~")else:print("不及格,需要补考哦!建议重新复习知识点~")2.2 关键点
Python用缩进区分代码块的归属,缩进错误会直接导致语法报错,这是新手最容易踩的坑之一。
# 正确示例:缩进一致,逻辑清晰 a =10if a >5:print("a大于5")print("执行代码块1")# 4个空格缩进,属于if内部print("无论条件是否成立,都会执行")# 无缩进,属于外部代码# 错误示例:缩进混乱,直接报错 a =10if a >5:print("a大于5")# 无缩进,语法报错print("执行代码块1")print("缩进不一致")# 缩进层级混乱,报错小技巧:
- 用IDE(如PyCharm)的自动缩进功能,避免手动调整出错;
- 避免3层以上嵌套缩进(比如if里套if再套if),否则代码可读性会变差,后续维护困难(比如“找半天不知道代码属于哪个分支”)。
2.3 空语句pass
如果条件语句中暂时没有要执行的代码,不能留空(会语法报错),此时用pass占位——它不执行任何操作,只保证语法完整,后续可随时补充代码。
# 示例:暂时不处理“输入1”的情况,用pass占位 num =int(input("请输入数字:"))if num ==1:pass# 占位用,后续可添加具体逻辑else:print("你输入的不是1")2.4 实战案例:
判断闰年(嵌套条件的实际应用)
闰年规则:
- 能被100整除(如2000年、2100年)且能被400整除是闰年。
- 不能被100整除,且能被4整除是闰年。
我们可以用嵌套条件语句来实现,逻辑清晰且贴近实际开发:
year =int(input("请输入年份:"))if year %100==0:# 嵌套条件:世纪年的额外判断if year %400==0:print(f"{year}是闰年,有366天")else:print(f"{year}是平年,有365天")else:if year %4==0:print(f"{year}是闰年,有366天")else:print(f"{year}是平年,有365天")当然我们也可以简化成这种写法:
year =int(input('请输入年份:'))if(not year %4and year %100)ornot year %400:print(f"{year}是闰年,有366天")else:print(f"{year}是平年,有365天")三、循环语句
遇到需要反复执行的操作(比如打印1-10、计算1-100的和、批量录入数据),使用循环语句的话能帮你避免写大量重复代码,实现“自动化重复”,这也是编程提高效率的核心优势之一。
Python主要有while和for两种循环,它们适用的场景不同,我们要学会“按需去选择”。
3.1 while循环
while循环的逻辑:只要条件为真,就反复执行循环体,直到条件为假才结束。适合“不确定循环次数,但知道结束条件”的场景。
(1)基础语法
while 条件: 循环体(缩进代码) 循环变量更新(必须要有!否则程序会一直无限循环) (2)经典示例
- 示例1:打印1-10
num =1while num <=10:print(num) num +=1# 循环变量+1,否则条件永远为真(无限循环)- 示例2:计算1-100的和
sum_total =0# 存储总和的变量,初始值0 num =1while num <=100: sum_total += num # 等价于sum_total = sum_total + num num +=1print(f"1-100的和:{sum_total}")# 输出:5050输出结果
5050
- 示例3:嵌套循环——打印99乘法表
i =1while i <=5: j =1while j <= i:print(f"{j}×{i}={j*i}", end="\t")# end="\t"让结果横向对齐 j +=1print()# 换行,进入下一行乘法表 i +=1(3)无限循环
如果循环变量不更新(比如没写num += 1),条件会永远为真,程序会一直循环下去(比如一直打印1),只能强制终止。
常见无限循环场景及解决:
- 忘记更新循环变量:添加
num += 1、i -= 1等更新语句; - 条件永远为真(如
while True):需在循环体内用break手动终止(我们后面会介绍到)。
3.2 for循环
Python的for循环和其他语言差异很大,它不用手动管理循环变量(初始化、更新、判断),而是直接遍历“可迭代对象”(比如数字序列、字符串、列表),语法更简洁,是我们日常开发中最常用的循环。
(1)基础语法
for 循环变量 in 可迭代对象: 循环体 (2)核心工具:range函数(生成数字序列)
range是Python中的内置函数,专门用来生成连续整数序列,有三种常用格式:
range(n):生成0~n-1,比如range(5)→0,1,2,3,4。range(a, b):生成a~b-1(左闭右开区间),比如range(1,6)→1,2,3,4,5。range(a, b, step):生成a~b-1,且步长为step(每次增减的数值),比如range(2,12,2)→2,4,6,8,10。
(3)经典示例
- 示例1:打印1-10(用
range(1,11))
for i inrange(1,11):print(i)- 示例2:打印偶数2、4、6、8、10(步长为2)
for i inrange(2,12,2):print(i)- 示例3:反向打印10-1(步长为-1)
for i inrange(10,0,-1):print(i)- 示例4:遍历字符串
text ="Python"for char in text:print(char)# 依次输出:P、y、t、h、o、n3. 循环控制:break和continue
循环中需要“提前结束”或“跳过某次执行”时,用break和continue控制流程——两者功能不同,新手容易混淆,一定要分清!
(1)break:直接终止整个循环
不管后续条件是否满足,立即跳出循环,不再执行任何循环体代码。适合“找到目标后就停止”的场景。
# 示例:找10以内的第一个偶数,找到即停止for i inrange(1,11):if i %2==0:print(f"找到的第一个偶数:{i}")break# 终止整个循环,后续数字不再判断(2)continue:跳过本次循环,进入下次
只跳过当前这次的循环体,不终止整个循环,接下来继续执行下一次迭代。适合“筛选掉不需要的情况,继续后续执行”的场景。
# 示例:打印1-10,跳过奇数(只打印偶数)for i inrange(1,11):if i %2!=0:continue# 跳过奇数,不执行后续printprint(i)# 只输出偶数:2、4、6、8、10(3)实战:输入数字求和,输入0结束(无限循环+break)
sum_total =0whileTrue:# 无限循环,靠break手动终止 num =float(input("请输入数字(输入0结束):"))if num ==0:break# 输入0,终止循环 sum_total += num print(f"所有输入数字的和:{sum_total}")四、综合实战:简易学生成绩管理系统
结合条件语句和循环,实现一个实用小工具——录入3名学生的成绩,自动判定等级、计算平均分,覆盖“输入校验、循环录入、条件判定、结果统计”等核心场景。
1. 功能需求
- 循环录入3名学生的成绩(支持0-100,无效成绩需重新输入)。
- 自动判定每个学生的成绩等级(优秀/良好/及格/不及格)。
- 计算3名学生的平均分并保留2位小数,最终输出统计结果。
2. 完整代码
# 简易学生成绩管理系统 sum_score =0# 存储3名学生的总分 student_count =3# 学生人数print("="*30)print("学生成绩管理系统(录入3名学生)")print("="*30)# 循环录入3名学生成绩(for循环+range,明确循环次数)for i inrange(1, student_count +1):# 内层while循环:校验成绩有效性(0-100)whileTrue: score =float(input(f"\n请输入第{i}名学生的成绩(0-100):"))if0<= score <=100:break# 成绩有效,跳出校验循环print("成绩无效!请输入0-100之间的数字~")# 累加总分 sum_score += score # 条件语句:判定成绩等级if score >=90: grade ="优秀"elif score >=80: grade ="良好"elif score >=60: grade ="及格"else: grade ="不及格"# 输出单名学生结果print(f"第{i}名学生:成绩{score}分,等级{grade}")# 计算并输出平均分(保留2位小数,更规范) avg_score = sum_score / student_count print(f"\n{'='*30}")print(f"3名学生的平均分:{avg_score:.2f}分")print(f"{'='*30}")至此,我们已梳理完Python基础语法(二)的核心内容了。最后我们在文末来进行一个投个票,告诉我你对哪部分内容最感兴趣、收获最大,也欢迎在评论区聊聊你的学习感受。后续我们还将深入探索函数、函数嵌套等内容,敬请关注 , 谢谢!
以上就是本期博客的全部内容了,感谢各位的阅读以及关注。如有内容存在疏漏或不足之处,恳请各位技术大佬不吝赐教、多多指正。
