Python基础语法学习:条件、循环与程序控制

一、顺序语句

默认情况下,Python 会按照代码从上到下的顺序依次执行。

例如:

python 复制代码
print("1")
print("2")
print("3")

执行结果一定是:

text 复制代码
1
2
3

不会突然变成 321 或者 132。

这种按照书写顺序依次执行的代码,就属于顺序语句。程序本质上是把一个个任务按照明确的顺序交给计算机完成,所以执行顺序非常重要。

但是实际程序不可能永远这么简单。

比如:

text 复制代码
如果成绩 >= 60,输出及格
否则,输出不及格

这就需要让程序进行判断。


二、条件语句

条件语句主要解决一个问题:

如果某个条件成立,就执行一段代码;否则执行另一段代码。

所以它也叫分支语句。

程序执行到条件判断这里之后,后面的路线可能就不一样了。

Python 中主要有三种写法:

python 复制代码
if
if - else
if - elif - else

三、if 语句

最简单的:

python 复制代码
if 条件:
    代码

如果条件表达式的结果是 True,执行代码块。

如果条件是 False,就直接跳过。

例如判断一个数是不是正数:

python 复制代码
a = int(input("请输入一个整数: "))

if a > 0:
    print("正数")

输入:

text 复制代码
10

输出:

text 复制代码
正数

如果输入 -10,这个 if 中的代码就不会执行。


四、if - else

如果存在两种情况:

text 复制代码
条件成立
条件不成立

就可以使用:

python 复制代码
if 条件:
    代码1
else:
    代码2

例如判断奇偶数:

python 复制代码
a = int(input("请输入一个整数: "))

if a % 2 == 0:
    print("偶数")
else:
    print("奇数")

这里的逻辑非常清楚:

text 复制代码
a % 2 == 0
       ↓
     True  → 偶数
     False → 奇数

五、if - elif - else

当情况不止两种的时候,就可以使用 elif。

比如判断一个整数:

python 复制代码
a = int(input("请输入一个整数: "))

if a > 0:
    print("正数")
elif a < 0:
    print("负数")
else:
    print("为 0")

执行的时候会从上往下判断:

text 复制代码
第一个条件成立 → 执行第一段
第一个不成立,第二个成立 → 执行第二段
前面都不成立 → 执行 else

Python 中写多条件分支时不是:

text 复制代码
else if

而是直接写:

python 复制代码
elif

六、Python条件语句和C++最大的区别:缩进

这个地方是刚学 Python 时特别容易出问题的。

C++ 中通常写:

cpp 复制代码
if (a > 0)
{
    cout << "positive";
}

Python 没有 {} 来表示代码块,而是使用缩进。

python 复制代码
if a > 0:
    print("positive")

这里的 print 前面有缩进,它就属于 if 的代码块。

Python 的条件语句有两个明显特点:

第一,if 后面的条件不需要加括号。

第二,条件末尾要加:

text 复制代码
:

第三,代码块通过缩进表示,而不是 {}。通常使用 4 个空格或者一个 Tab。


七、缩进到底有多重要?

例如:

python 复制代码
a = input("请输入一个整数: ")

if a == "1":
    print("hello")
    print("world")

这里两个 print 都有缩进,所以它们都属于 if。

也就是说:

text 复制代码
a == "1" 成立
    ↓
hello
world

都会执行。

但是如果写成:

python 复制代码
a = input("请输入一个整数: ")

if a == "1":
    print("hello")

print("world")

那么只有 hello 属于 if。

world 已经跑到了 if 外面,所以无论条件是否成立都会执行。

这个区别看起来很小,但是写复杂代码时特别容易出错。


八、代码块还可以继续嵌套

Python 中代码块可以嵌套。

比如:

python 复制代码
a = input("请输入第一个整数: ")
b = input("请输入第二个整数: ")

if a == "1":
    if b == "2":
        print("hello")
    print("world")

print("python")

这里:

text 复制代码
print("hello")

有两级缩进,属于第二层 if。

text 复制代码
print("world")

只有一级缩进,属于第一层 if。

而:

text 复制代码
print("python")

没有缩进,所以不属于上面的条件语句。

所以 Python 写嵌套代码时,一定要看清楚每一行到底属于哪一级代码块。


九、条件语句练习:判断闰年

闰年的判断就能明显感受到条件嵌套。

一种写法可以分情况处理:

python 复制代码
year = int(input("请输入年份: "))

if year % 100 == 0:
    if year % 400 == 0:
        print("闰年")
    else:
        print("平年")
else:
    if year % 4 == 0:
        print("闰年")
    else:
        print("平年")

这里先判断是不是整百年,然后再根据不同情况继续判断。

可以看到,条件语句不仅可以一个套一个,还可以在里面继续进行判断。


十、pass:什么也不做

有时候 Python 的语法要求这里必须有一条语句,但是暂时又不想写具体代码,就可以使用:

python 复制代码
pass

例如:

python 复制代码
if a != 1:
    pass
else:
    print("hello")

pass 本身不会对程序产生实际操作,它只是占一个位置,让代码结构完整。

所以可以把它理解成:

这里暂时留空,但语法上需要有东西。


十一、循环语句

条件语句解决的是:

根据不同情况选择不同代码。

循环解决的是:

同一段代码需要重复执行很多次怎么办?

比如打印:

text 复制代码
1
2
3
4
5
...
10

如果手写十个 print,当然可以,但明显很麻烦。

这时候就需要循环。

Python 这里主要接触:

text 复制代码
while
for

十二、while循环

最基本的语法:

python 复制代码
while 条件:
    循环体

执行逻辑:

text 复制代码
条件为 True
    ↓
执行循环体
    ↓
再次判断条件
    ↓
条件为 True → 继续
条件为 False → 结束

例如打印 1~10:

python 复制代码
num = 1

while num <= 10:
    print(num)
    num += 1

这里一定要注意:

python 复制代码
num += 1

不能忘。

如果忘记修改 num:

python 复制代码
num = 1

while num <= 10:
    print(num)

那么 num 永远都是 1,条件永远成立,程序就会一直循环下去。


十三、使用 while 计算 1~100 的和

python 复制代码
sum = 0
num = 1

while num <= 100:
    sum += num
    num += 1

print(sum)

这个代码其实就是把前面学到的变量和运算符组合起来。

循环每执行一次:

text 复制代码
sum 加上当前 num
num 再加 1

直到:

text 复制代码
num > 100

循环结束。


十四、用 while 计算阶乘

例如计算 5!:

python 复制代码
result = 1
n = 1

while n <= 5:
    result *= n
    n += 1

print(result)

计算过程:

text 复制代码
1 × 1
1 × 2
1 × 2 × 3
1 × 2 × 3 × 4
1 × 2 × 3 × 4 × 5

最终得到:

text 复制代码
120

还可以继续套一层循环,计算:

text 复制代码
1! + 2! + 3! + 4! + 5!

这就出现了嵌套循环:

python 复制代码
num = 1
sum = 0

while num <= 5:
    factorResult = 1
    i = 1

    while i <= num:
        factorResult *= i
        i += 1

    sum += factorResult
    num += 1

print(sum)

也就是说:

循环里面还可以继续套循环。


十五、for循环

for 循环也是 Python 中非常常用的一种循环。

基本格式:

python 复制代码
for 循环变量 in 可迭代对象:
    循环体

这里的"可迭代对象"可以简单理解成:

里面有多个元素,可以一个一个拿出来。


十六、range()函数

如果只是想循环执行固定次数,最常用的就是:

python 复制代码
range()

例如:

python 复制代码
for i in range(1, 11):
    print(i)

输出:

text 复制代码
1
2
3
4
5
6
7
8
9
10

这里的:

python 复制代码
range(1, 11)

表示:

text 复制代码
[1, 11)

也就是包含 1,不包含 11。

这个左闭右开的规则一定要记住。


十七、range()的第三个参数

range 还可以指定步长。

例如:

python 复制代码
for i in range(2, 12, 2):
    print(i)

输出:

text 复制代码
2
4
6
8
10

这里:

text 复制代码
2

就是每次增加的步长。

所以可以理解为:

text 复制代码
起点
终点
步长

步长还可以是负数:

python 复制代码
for i in range(10, 0, -1):
    print(i)

就能实现从 10 输出到 1。


十八、for循环和C++的区别

C++ 中经常这样写:

cpp 复制代码
for(int i = 1; i <= 10; i++)
{
    cout << i;
}

Python 的 for 没有这种:

text 复制代码
初始化
条件判断
变量更新

而是直接:

python 复制代码
for i in range(1, 11):
    print(i)

十九、break

break 的作用是:

直接结束整个循环。

例如:

python 复制代码
for i in range(1, 6):
    if i == 3:
        break

    print(f"吃完第 {i} 个包子")

当 i == 3 时执行 break,循环直接结束,所以后面的 4、5 都不会继续。

简单记:

text 复制代码
break
↓
整个循环结束

二十、continue

continue 则不同。

它表示:

结束本次循环,直接进入下一次循环。

例如:

python 复制代码
for i in range(1, 6):
    if i == 3:
        continue

    print(f"吃完第 {i} 个包子")

执行到 3 时跳过当前这一次。

所以输出的会是:

text 复制代码
吃完第 1 个包子
吃完第 2 个包子
吃完第 4 个包子
吃完第 5 个包子

3 被跳过了,但整个循环并没有结束。

所以这两个一定要区分:

text 复制代码
continue → 跳过本次循环
break    → 结束整个循环

二十一、while True:一直循环,自己决定什么时候结束

实际编程时经常会看到:

python 复制代码
while True:

它表示先进入一个无限循环,然后在循环内部根据条件决定什么时候 break。

例如不断输入数字,使用 ; 作为结束标志:

python 复制代码
sum = 0
count = 0

while True:
    num = input("请输入数字: ")

    if num == ';':
        break

    num = float(num)
    sum += num
    count += 1

print(sum / count)

程序会一直读取数据。

直到用户输入:

text 复制代码
;

才执行:

python 复制代码
break

然后结束循环。

这种写法以后会经常遇到。


二十二、综合案例:人生重开模拟器

前面的 if、while、for 学完之后,已经可以开始写稍微复杂一些的程序了。

这里用了一个"人生重开模拟器"的案例。

虽然这是一个小游戏,但是里面实际上把前面学到的内容基本都串起来了:

text 复制代码
输入
变量
类型转换
if
elif
else
while
for
continue
break
随机数
嵌套条件

所以这种综合案例对于理解控制语句很有帮助。


二十三、先设置角色属性

游戏一开始有四个属性:

text 复制代码
颜值 face
体质 strong
智力 iq
家境 home

每个属性的范围是:

text 复制代码
[1, 10]

并且四项属性总和不能超过:

text 复制代码
20

如果输入不符合要求,就重新输入。

这里最适合使用:

python 复制代码
while True:

因为程序不知道用户什么时候才能输入正确的数据。

例如:

python 复制代码
while True:
    face = int(input("设定颜值(1-10): "))
    strong = int(input("设定体质(1-10): "))
    iq = int(input("设定智力(1-10): "))
    home = int(input("设定家境(1-10): "))

    if face < 1 or face > 10:
        print("颜值设置有误!")
        continue

    if strong < 1 or strong > 10:
        print("体质设置有误!")
        continue

    if iq < 1 or iq > 10:
        print("智力设置有误!")
        continue

    if home < 1 or home > 10:
        print("家境设置有误!")
        continue

    if face + strong + iq + home > 20:
        print("总点数超过了 20!")
        continue

    print("初始属性设定完成!")
    break

这里同时用了:

text 复制代码
while True
if
continue
break

输入错误:

text 复制代码
continue

重新输入。

输入正确:

text 复制代码
break

结束属性设置。

这个例子非常适合理解 break 和 continue 的实际区别。


二十四、随机数

游戏里面还用到了:

python 复制代码
random.randint()

例如:

python 复制代码
point = random.randint(1, 6)

可以生成一个 [1, 6] 范围内的随机整数,可以把它理解成掷一次骰子。

例如:

python 复制代码
point = random.randint(1, 6)

if point % 2 == 1:
    gender = 'boy'
else:
    gender = 'girl'

根据随机数是奇数还是偶数来决定角色性别。

后面出生环境的生成,也是通过随机数配合 if - elif - else 完成的。


二十五、再用 for 模拟年龄增长

到了人生经历部分,就可以使用:

python 复制代码
for age in range(1, 11):

模拟角色从 1 岁到 10 岁。

每一年先生成一个随机数,然后根据:

text 复制代码
性别
年龄
颜值
体质
智力
家境

等不同条件决定这一年发生什么事情。

比如:

python 复制代码
for age in range(1, 11):
    info = f'你今年 {age} 岁, '
    point = random.randint(1, 3)

接下来通过大量的:

python 复制代码
if
elif
else

判断不同情况。

这一部分其实就是前面条件语句和循环语句的综合应用。


二十六、程序甚至可以直接退出

在某些特殊事件中,程序需要提前结束。

例如:

python 复制代码
sys.exit(0)

可以直接退出程序。

如果角色夭折,就会:

python 复制代码
print(info)
print("游戏结束!")
sys.exit(0)

直接结束后面的程序。

所以这里又多认识了一个控制程序执行流程的方法。


二十七、time.sleep()

python 复制代码
time.sleep(1)

可以让程序暂停 1 秒。

这样每一年的人生经历不会瞬间全部打印出来,看起来更像一个真正运行的小游戏。


二十八、人生重开模拟器代码示例

python 复制代码
# 人生重开模拟器

# 在 python 中, 如果想引入其它模块, 需要先使用 import 语句, 把模块的名字给"导入"进来
import random
import sys
import time

print('+-------------------------------------------+')
print('|                                           |')
print('|          花有重开日 人无再少年                |')
print('|                                           |')
print('|          欢迎来到人生重开模拟器               |')
print('|                                           |')
print('+-------------------------------------------+')

# 设置初始属性
# 颜值, 体质, 智力, 家境, 总和不能超过 20, 每一项取值都是 1-10 之间

# 使用循环, 使玩家在输入错误的时候, 可以重新输入
while True:
    print("请设置初始属性(可用点数总数为20)")
    face = int(input("请输入颜值(1-10): "))
    strong = int(input("请输入体质(1-10): "))
    iq = int(input("请输入智力(1-10): "))
    home = int(input("请输入家境(1-10): "))
    if face < 1 or face > 10:
        print("颜值设置有误!")
        continue
    if strong < 1 or strong > 10:
        print("体质设置有误!")
        continue
    if iq < 1 or iq > 10:
        print("智力设置有误!")
        continue
    if home < 1 or home > 10:
        print("家境设置有误!")
        continue
    if face + strong + iq + home > 20:
        print("总属性和超出20, 设置有误!")
        continue
    print("初始属性输入完毕!")
    print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")
    break

# 生成角色的性别
# 使用 random.randint(begin, end), 就能生成 [begin, end] 随机整数
point = random.randint(1, 6)
if point % 2 == 1:
    gender = 'boy'
    print("你是个男孩")
else:
    gender = 'girl'
    print("你是个女孩")

# 设定角色的出生点
point = random.randint(1, 3)
if home == 10:
    print("你出生在帝都, 你的父母是高官政要")
    home += 1
    face += 1
    iq += 1
elif 7 <= home <= 9:
    if point == 1:
        print("你出生在大城市, 父母是公务员")
        face += 2
    elif point == 2:
        print("你出生在大城市, 父母是企业高管")
        home += 2
    else:
        print("你出生在大城市, 父母是大学教授")
        iq += 2
elif 4 <= home <= 6:
    if point == 1:
        print("你出生在三线城市, 父母是医生")
        strong += 1
    elif point == 2:
        print("你出生在镇上, 父母是老师")
        iq += 1
    else:
        print("你出生在镇上, 父母是个体户")
        home += 1
else:
    if point == 1:
        print("你出生在农村, 父母是辛苦劳作的农民")
        strong += 1
        face -= 2
    elif point == 2:
        print("你出生在穷乡僻壤, 父母是无业游民")
        home -= 1
    else:
        print("你出生在镇上, 父母感情不和")
        strong -= 1
print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")
time.sleep(1.5)

# 幼年阶段
for age in range(1, 11):
    info = f'你今年 {age} 岁. '
    point = random.randint(1, 3)
    if gender == 'girl' and home <= 3 and point == 1:
        info += '你的家里人重男轻女思想非常严重, 你被遗弃了!'
        print(info)
        print("游戏结束!")
        sys.exit(0)
    elif strong < 6 and point < 3:
        info += '你生了一场病, '
        if home >= 5:
            info += '在父母的悉心照料下, 你康复了'
            strong += 1
            home -= 1
        else:
            info += '你的父母没精力管你, 你的身体状况更糟糕了'
            strong -= 1
    elif face <= 4 and age >= 7:
        info += '你长得太丑了, 别的小朋友不喜欢你'
        if iq > 5:
            info += '你决定用学习填充自己'
            iq += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架'
                strong += 1
                iq -= 1
            else:
                info += '你经常被别的小朋友欺负!'
                strong -= 1
    elif iq < 5:
        info += '你看上去傻傻的. '
        if home >= 8 and age >= 6:
            info += '你的父母把你送到更好的学校学习'
            iq += 1
        elif 4 <= home <= 7:
            if gender == 'boy':
                info += '你的父母鼓励你多运动, 争取成为运动员'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己'
                face += 1
        else:
            info += '你的父母为此经常吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
            else:
                pass
    else:
        info += '你健康成长. '
        if point == 1:
            info += '你看起来更结实了.'
            strong += 1
        elif point == 2:
            info += '你看起来更好看了.'
        else:
            pass
    # 打印这一年发生的事情
    print(info)
    print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")
    print('------------------------------------------------------')
    # 为了方便观察, 加一个暂停操作
    time.sleep(1.5)

二十九、总结

1. Python靠缩进表示代码块

不是:

python 复制代码
if a > 0:
{
}

而是:

python 复制代码
if a > 0:
    print("hello")

缩进错了,代码结构就可能完全变掉。


2. elif相当于多条件分支

python 复制代码
if 条件1:
    ...
elif 条件2:
    ...
else:
    ...

而不是 C++ 里的 else if 写法。


3. while适合根据条件重复

python 复制代码
while 条件:
    ...

条件一直成立就一直运行。


4. for适合遍历可迭代对象

最常见的就是:

python 复制代码
for i in range(1, 11):
    ...

5. break和continue一定分清

text 复制代码
break
→ 整个循环结束

continue
→ 本次循环结束,进入下一次

相关推荐
吠品1 小时前
volatile到底在拦什么:SysTick->VAL读的哪格
java·服务器·开发语言
远离UE41 小时前
UE5.8 Substrate Glint 笔记
笔记
用户14036058193831 小时前
Phase A · Step 3:模型导出 ONNX
笔记
胡二拉二胡1 小时前
抗遗忘单词表 App:让单词记忆不再「背了就忘」
经验分享·笔记·学习
伞伞悦读1 小时前
【第53期】有序插入把二叉搜索树变成链:别只看“树”的名字
python
郝学胜_神的一滴1 小时前
AI 编程智能体 04:一文看懂智能体的核心能力与概念辨析
人工智能·python
2301_789380491 小时前
【踩坑记录】Windows资源管理器无限重启,改注册表、看日志
windows·经验分享·笔记
一缕82年的清风1 小时前
实战指南:如何把现有 REST API 工业级封装为 MCP(Model Context Protocol)服务
python·mcp
狼与自由1 小时前
python打包
开发语言·python