news 2026/4/18 10:31:20

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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.1while循环

基本语法:

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.2for循环

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循环用于模拟逐年经历的人生。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:26:55

采购计划没抓手?两小时,我搭了一套以销定采的供应链系统

很多公司在做供应链的时候&#xff0c;总觉得自己不是没有数据&#xff0c;就是没有方法。最后变成一句话&#xff1a;计划没抓手&#xff0c;采购全靠经验&#xff0c;结果一拍脑袋就要货&#xff0c;一拍屁股又让供应商等等等等。那天我去看一家工厂的流程&#xff0c;销售预…

作者头像 李华
网站建设 2026/4/18 3:26:12

构建个人专属知识库:访答知识库深度解析与实战指南

构建个人专属知识库&#xff1a;访答知识库深度解析与实战指南 在信息爆炸的时代&#xff0c;高效管理个人知识已成为提升工作效率的关键。本地私有知识库因其数据安全、离线可用等优势&#xff0c;正受到越来越多人的青睐。在众多选择中&#xff0c;知识库以其独特的定位和功能…

作者头像 李华
网站建设 2026/4/17 20:00:16

8个课堂汇报神器,本科生AI工具推荐与使用攻略

8个课堂汇报神器&#xff0c;本科生AI工具推荐与使用攻略 论文写作的“三座大山”&#xff1a;时间、重复率与效率的困境 对于本科生来说&#xff0c;课堂汇报和论文写作从来都不是轻松的任务。从选题到文献综述&#xff0c;从框架搭建到内容撰写&#xff0c;每一个环节都充满了…

作者头像 李华
网站建设 2026/4/18 5:20:19

“从可控性到自主反思”这个短语,似乎描述了一种从外部控制(或自我控制)向内在自主反思的转变过程

“从可控性到自主反思”这个短语&#xff0c;似乎描述了一种从外部控制&#xff08;或自我控制&#xff09;向内在自主反思的转变过程。这在心理学、人工智能&#xff08;AI&#xff09;和教育等领域都有深刻的体现&#xff0c;代表了个体或系统从被动受控、依赖外部约束&#…

作者头像 李华
网站建设 2026/4/18 4:24:05

SQL中表删除与表修改

表删表drop table [if not exist] students;表修改ALTER语句使用 ALTER TABLE 语句追加, 修改, 或删除列的语法add增加字段&#xff1a;alter table students add [column] dateT date;设置默认值&#xff1a;alter table students add dateT date DEFAULT "2025-12-12&qu…

作者头像 李华