news 2026/2/1 22:13:44

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/2/1 6:59:44

npm audit检查Qwen-Image-Edit-2509依赖安全性

npm audit 检查 Qwen-Image-Edit-2509 依赖安全性 在现代 AI 应用快速落地的背景下&#xff0c;一个看似“纯粹”的图像编辑模型早已不再是孤立的算法黑盒。以 Qwen-Image-Edit-2509 为例&#xff0c;它虽然核心是基于 Python 的多模态扩散模型&#xff0c;但在实际部署中&…

作者头像 李华
网站建设 2026/1/29 12:29:25

为什么Qwen3-VL-8B是轻量级多模态入门首选?

为什么Qwen3-VL-8B是轻量级多模态入门首选&#xff1f; 在电商商品页自动生成图文描述、客服系统“拍照提问”即时响应、教育平台自动解析习题图片的背后&#xff0c;隐藏着一个共同的技术核心&#xff1a;多模态大模型。这些能够“看图说话”的AI系统&#xff0c;正从实验室走…

作者头像 李华
网站建设 2026/2/1 6:15:14

计算机Java毕设实战-基于springboot古风生活体验交流网站的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/2/1 14:13:12

花5分钟判断,你的Jmeter技能是大佬还是小白!

jmeter 这个工具既可以做接口的功能测试&#xff0c;也可以做自动化测试&#xff0c;还可以做性能测试&#xff0c;其主要用途就是用于性能测试。但是&#xff0c;有些公司和个人&#xff0c;就想用 jmeter 来做接口自动化测试。 你有没有想过呢&#xff1f; 下面我就给大家讲…

作者头像 李华
网站建设 2026/1/29 10:26:44

Transformer模型压缩技术在Qwen-Image上的应用前景

Transformer模型压缩技术在Qwen-Image上的应用前景 在生成式AI迅速渗透内容创作领域的今天&#xff0c;图像生成模型正面临一场关键的“落地挑战”&#xff1a;如何在不牺牲质量的前提下&#xff0c;把动辄上百GB显存需求、延迟高达数秒的庞然大物&#xff0c;塞进一张消费级显…

作者头像 李华
网站建设 2026/1/29 14:38:19

HuggingFace镜像网站上线Qwen-Image,支持高分辨率图像生成

HuggingFace镜像网站上线Qwen-Image&#xff0c;支持高分辨率图像生成 在AIGC&#xff08;生成式人工智能&#xff09;浪潮席卷内容创作领域的今天&#xff0c;一个现实问题始终困扰着设计师和开发者&#xff1a;如何让AI真正理解复杂、细腻的中文语义&#xff0c;并输出可用于…

作者头像 李华