Python 基础语法(二):程序流程控制

一、 顺序语句

在 Python 中,代码默认的执行顺序是从上到下,依次执行 。这种结构清晰、无歧义的执行方式称为顺序语句

核心概念:

  • 执行顺序是编程的基础,计算机严格按照代码的书写顺序执行指令。
  • 安排正确的任务顺序是程序逻辑正确的关键。

类比理解:

就像人生的典型顺序:上学 -> 工作 -> 结婚 -> 生子。如果顺序错乱,就会带来问题。

二、 条件语句(分支语句)

条件语句让程序具备了基础的逻辑判断能力,能够表达"如果...否则..."的语义,使程序根据不同的条件走向不同的分支。

2.1 什么是条件语句?

一个生活化的例子:

如果 我认真敲代码 我就 很容易找到工作 否则 我就 容易毕业就失业

这里的"我认真敲代码"就是条件。条件成立(为真)则执行一个分支,不成立(为假)则执行另一个分支。

2.2 语法格式

Python 使用 if, elif, else 关键字来构建条件语句,其语法与其他语言有显著区别:

  1. if 语句

    复制代码
    if expression:
        do_something1
        do_something2
    next_something
    • 如果 expressionTrue,则执行 do_something1do_something2
    • 如果 expressionFalse,则跳过它们,直接执行 next_something
  2. if - else 语句

    复制代码
    if expression:
        do_something1
    else:
        do_something2
    • 如果 expressionTrue,执行 do_something1
    • 如果 expressionFalse,执行 do_something2
  3. if - elif - else 语句(多分支)

    复制代码
    if expression1:
        do_something1
    elif expression2:
        do_something2
    else:
        do_something3
    • 检查 expression1,为 True 则执行 do_something1,后续分支不再检查。
    • expression1False,则检查 expression2,为 True 则执行 do_something2
    • 若所有 if/elif 条件都不满足,则执行 else 下的 do_something3

Python 条件语句的独特之处:

  • 无括号 :条件表达式后没有 ()
  • 冒号结尾 :每个 if, elif, else 行都以冒号 : 结束。
  • 缩进表示代码块 :使用缩进 (通常是 4 个空格)来标识属于该条件的执行语句块,而不是使用 {}
  • elif :多条件分支使用 elif,而不是 else if

示例:选择学习态度

复制代码
choice = input("输入 1 表示愿意认真学习,输入 2 表示躺平摆烂:")
if choice == "1":
    print("你选择了认真敲代码,未来可期!")
elif choice == "2":
    print("你选择了躺平摆烂,要加油啊!")
else:
    print("输入有误,请重新选择。")

2.3 缩进与代码块

代码块 是一组作为一个整体执行的语句。在 Python 中,缩进是语法的一部分,它严格定义了代码的从属关系。

示例对比:

复制代码
# 代码1:print("world") 属于 if 代码块
if a == "hello":
    print("world") # 此语句有一级缩进,只有条件成立才执行
print("python") # 此语句无缩进,总是执行

# 代码2:print("world") 不属于 if 代码块
if a == "hello":
    print("hello") # 此语句有一级缩进,只有条件成立才执行
print("world") # 此语句无缩进,总是执行
print("python") # 此语句无缩进,总是执行

嵌套代码块: 代码块内部可以再包含其他代码块,形成多层缩进。

复制代码
if a == "1":
    print("hello") # 属于外层 if 代码块
    if b == "2":
        print("world") # 属于内层 if 代码块,有两级缩进
print("python") # 无缩进,总是执行
  • print("world") 有两级缩进,只在 a == "1" b == "2" 时执行。
  • print("hello") 有一级缩进,只在 a == "1" 时执行。
  • print("python") 没有缩进,总是执行。

缩进的重要性:

  • 优点:强制代码格式规范,使结构一目了然,提高了代码的可读性。
  • 缺点:当嵌套层次很深时,容易混淆某个语句的归属层级(因此有"写 Python 需要自备游标卡尺"的梗)。

2.4 空语句:pass

有时,语法上需要一个语句块,但逻辑上暂时不需要执行任何操作。这时可以使用 pass 语句,它是一个空操作,仅用于占位,保持语法正确。

示例:

复制代码
num = int(input("输入一个数字:"))
if num == 1:
    pass # 什么都不做,但语法正确
else:
    print("这个数字不是 1")

如果没有 passif 分支下为空,Python 解释器会报语法错误。

2.5 练习

  1. 判断奇数:输入一个整数,判断其是否为奇数。
  2. 判断正负:输入一个整数,判断它是正数、负数还是零。
  3. 判断闰年 :输入一个年份,判断它是否为闰年。
    • 闰年规则:能被4整除但不能被100整除,能被400整除的年份。

三、 循环语句

循环语句用于处理需要重复执行的操作。

3.1 while 循环

基本语法:

复制代码
while 条件表达式:
    循环体语句
  • 条件表达式True 时,执行循环体内的代码。
  • 执行完一次循环体后,再次检查条件,如果仍为 True,则继续执行。
  • 条件表达式变为 False 时,循环结束。

示例:

复制代码
# 打印 1-10
num = 1
while num <= 10:
    print(num)
    num += 1

# 计算 1-100 的和
sum = 0
i = 1
while i <= 100:
    sum += i
    i += 1
print(f"1到100的和是:{sum}")

# 计算 5 的阶乘
result = 1
n = 5
while n > 0:
    result *= n
    n -= 1
print(f"5的阶乘是:{result}")

3.2 for 循环

Python 的 for 循环主要用于遍历可迭代对象 (如列表、字符串、range对象等),依次取出其中的每个元素。

基本语法:

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

使用 range() 函数生成数字序列: range()for 循环的常用伙伴,用于生成一个整数序列。

  • range(stop): 生成 [0, stop) 的序列。
  • range(start, stop): 生成 [start, stop) 的序列。
  • range(start, stop, step): 生成 [start, stop),步长为 step 的序列。

示例:

复制代码
# 打印 1-10
for i in range(1, 11): # [1, 11) 即 1到10
    print(i)

# 打印 2, 4, 6, 8, 10
for i in range(2, 11, 2): # 从2开始,到11前结束,每次加2
    print(i)

# 打印 10 到 1
for i in range(10, 0, -1): # 步长为负数,递减
    print(i)

# 计算 1-100 的和
sum = 0
for i in range(1, 101):
    sum += i
print(sum)

3.3 循环控制关键字:breakcontinue

  • break :立即终止当前所在层的整个循环,直接跳到循环后面的语句执行。

    复制代码
    # 模拟吃包子,吃到第3个发现半只虫,全吐了
    for i in range(1, 6):
        if i == 3:
            print(f"吃到第{i}个包子,发现半只虫!不吃了!")
            break
        print(f"吃第{i}个包子")
  • continue :立即结束本轮 循环,跳过本轮循环中 continue 之后的语句,直接进入下一轮循环的条件判断。

    复制代码
    # 模拟吃包子,吃到第3个发现一只虫,跳过这个包子继续吃
    for i in range(1, 6):
        if i == 3:
            print(f"第{i}个包子有虫,跳过不吃")
            continue
        print(f"吃第{i}个包子")

综合示例:输入数字求平均值

复制代码
sum = 0
count = 0
while True:
    num = input("请输入一个数字(输入分号;结束):")
    if num == ";":
        break # 输入分号则结束循环
    sum += float(num)
    count += 1
if count > 0:
    print(f"平均值为:{sum / count}")
else:
    print("没有输入有效数字。")

四、 综合案例:简易人生重开模拟器(核心逻辑)

以下是根据资料实现的游戏核心逻辑框架,展示了顺序、条件、循环语句的综合运用。

复制代码
import random
import time
import sys

# 1. 设置初始属性 (颜值face, 体质strong, 智力iq, 家境home)
while True:
    print("请分配你的初始属性(总和不超过20,每个属性1-10):")
    face = int(input("颜值(1-10): "))
    strong = int(input("体质(1-10): "))
    iq = int(input("智力(1-10): "))
    home = int(input("家境(1-10): "))
    total = face + strong + iq + home
    if 1 <= face <= 10 and 1 <= strong <= 10 and 1 <= iq <= 10 and 1 <= home <= 10 and total <= 20:
        print("属性设置成功!")
        break
    else:
        print("属性输入不合法,请重新分配。n")

# 2. 随机决定性别
gender_num = random.randint(1, 6)
if gender_num % 2 == 1:
    gender = "男孩"
else:
    gender = "女孩"
print(f"你的性别是:{gender}")

# 3. 根据家境决定出生点
dice = random.randint(1, 3) # 掷色子细分情况
if home == 10:
    print("你出生在皇室家庭,天生富贵!")
    iq += 1
    face += 1
elif 7 <= home <= 9:
    print("你出生在富裕家庭,生活优渥。")
    if dice == 1:
        iq += 1
    elif dice == 2:
        face += 1
    else:
        strong += 1
elif 4 <= home <= 6:
    print("你出生在普通家庭。")
    # 属性变化不大或微小负影响
    if dice == 3:
        strong -= 1
else: # home 在 1-3
    print("你出生在贫困家庭,童年艰辛。")
    strong -= 1
    if dice == 1:
        iq -= 1

# 4. 人生历程(以幼年阶段1-10岁为例)
print("n--------- 人生开始 ---------")
for age in range(1, 11):
    print(f"n=== {age} 岁 ===")
    event_dice = random.randint(1, 3)
    # 根据年龄、性别、属性、随机数触发不同事件
    if age < 3:
        print("你度过了懵懂的婴儿时期。")
        strong += random.choice([0, 1]) # 体质可能增长
    elif gender == "男孩" and event_dice == 1:
        print("你和小伙伴爬树,摔了一跤,体质略有下降。")
        strong -= 1
    elif gender == "女孩" and event_dice == 2:
        print("你开始学习舞蹈,气质和颜值提升了。")
        face += 1
    elif iq > 5 and event_dice == 3:
        print("你展现了过人的学习天赋,智力增长了。")
        iq += 1
    else:
        print("这一年平安无事。")

    # 检查是否夭折(示例逻辑)
    if strong < 1:
        print("由于体质太弱,你不幸夭折了。GAME OVER.")
        sys.exit(0)

    # 打印当前属性
    print(f"[当前属性] 颜值:{face} 体质:{strong} 智力:{iq} 家境:{home}")
    time.sleep(1) # 暂停1秒,方便观察

print("n恭喜你平安度过了童年!")
# 此处可以继续扩展青年、壮年、老年阶段...

这个案例涵盖了:

  • 顺序语句:代码的整体执行流程。
  • 条件语句 (if/elif/else):属性校验、性别判断、出生点事件、每年的人生事件触发。
  • 循环语句 (for, while)while循环用于确保输入合法属性,for循环用于模拟逐年经历的人生。
相关推荐
charlie1145141912 小时前
如何快速在 VS2026 上使用 C++ 模块 — 完整上手指南
开发语言·c++·笔记·学习·现代c++
时空无限2 小时前
Java Buildpack Reference
java·开发语言
大连好光景3 小时前
Python打日志
运维·python·运维开发
serendipity_hky3 小时前
【go语言 | 第2篇】Go变量声明 + 常用数据类型的使用
开发语言·后端·golang
syt_biancheng3 小时前
博客系统全流程测试总结
python·selenium·测试用例·压力测试·postman
报错小能手3 小时前
STL_unordered_map
开发语言·c++·哈希算法
可信计算3 小时前
【算法随想】一种基于“视觉表征图”拓扑变化的NLP序列预测新范式
人工智能·笔记·python·算法·自然语言处理
张广涛3 小时前
【无标题】
python
爱笑的眼睛113 小时前
超越剪枝与量化:下一代AI模型压缩工具的技术演进与实践
java·人工智能·python·ai