【Python】基础语法入门:顺序、条件与循环

【Python】基础语法入门:顺序、条件与循环

文章目录

一、顺序语句: 从上到下,依次执行

默认情况下,Python代码的执行顺序就像我们日常做事的流程——先做第一步,再做第二步,直到所有步骤完成。这种按固定顺序执行的语句,就是顺序语句

print("1")print("2")print("3")#输出 1 2 3

二、条件语句:做选择

条件语句让程序拥有了“判断能力”,能够根据不同的条件执行不同的逻辑。

1. 条件语句的三种形式

Python中通过ifelseelif三个关键字实现条件判断,不同形式对应不同的判断场景。

(1)单条件判断:if语句

当只需要判断“满足条件就执行,不满足就跳过”时,使用if语句。
语法格式

if 条件表达式: 满足条件时执行的代码块(缩进) # 不满足条件时执行的代码(无缩进)

注意

  • 条件表达式后没有括号(),结尾必须加冒号:
  • 代码块通过缩进区分(通常是4个空格或1个Tab),这是Python的特色,缩进错误会直接报错。

示例:如果输入的数字是1,打印“你选择了认真学习”。

choice =input("请输入数字1:")if choice =="1":print("你选择了认真学习")print("程序结束")

choice == "1"成立时,会先打印“你选择了认真学习”,再打印“程序结束”;如果不成立,直接打印“程序结束”。

(2)双条件判断:if-else语句

当需要判断“满足条件执行A,不满足执行B”时,使用if-else语句,覆盖所有可能性。
语法格式

if 条件表达式: 满足条件执行的代码块A else: 不满足条件执行的代码块B 

示例:判断输入的整数是奇数还是偶数。

a =int(input("请输入一个整数:"))if a %2==0:print("偶数")else:print("奇数")

无论输入的数字是多少,都会进入其中一个分支,不会出现“无响应”的情况。

(3)多条件判断:if-elif-else语句

当有多个条件需要依次判断时,使用if-elif-else语句,相当于“如果…否则如果…否则…”。
语法格式

if 条件1: 执行代码块1elif 条件2: 执行代码块2elif 条件3: 执行代码块3else: 所有条件都不满足时执行的代码块 

示例:判断输入的数字是正数、负数还是0。

a =int(input("请输入一个整数:"))if a >0:print("正数")elif a <0:print("负数")else:print("为0")

程序会依次判断a > 0a < 0,只要有一个条件成立就执行对应的代码块,所有条件都不成立时才会执行else中的内容。

2. 缩进与代码块

在Python中,缩进是代码块的标志,不同层级的缩进代表不同的代码归属,这和C++、Java用{}划分代码块的方式完全不同。

正确理解缩进:
# 代码1:print("world")属于if代码块 a =input("请输入一个整数:")if a =="1":print("hello")print("world")# 一级缩进,和print("hello")同属if代码块# 代码2:print("world")不属于if代码块 a =input("请输入一个整数:")if a =="1":print("hello")# 一级缩进print("world")# 无缩进,属于全局代码块
  • 代码1中,只有a == "1"成立时,才会同时打印“hello”和“world”;
  • 代码2中,无论a是否等于1,都会打印“world”,因为它没有缩进,不属于if的代码块。
缩进嵌套:

代码块内部还可以嵌套其他代码块,形成多层逻辑:

a =input("请输入第一个整数:") b =input("请输入第二个整数:")if a =="1":print("进入a=1的分支")if b =="2":print("world")# 二级缩进,属于if b=="2"代码块print("hello")# 一级缩进,属于if a=="1"代码块print("python")# 无缩进,全局代码块

嵌套缩进需要严格对齐,否则会报错。这也是为什么有“写Python需要自备游标卡尺”的梗——缩进的规范性直接决定程序能否运行。

3. 空语句pass:占位符

有时候,我们需要在条件语句中“占个位置”,但暂时不执行任何操作,这时候就需要用到pass语句——它是Python中的“空语句”,不影响程序执行,只用于保证语法格式正确。

错误示例

a =int(input("请输入一个整数:"))if a !=1:# 暂时没有要执行的代码else:print("hello")

这段代码会直接报错,因为if a != 1:后面没有任何代码,不符合Python语法。

正确示例

a =int(input("请输入一个整数:"))if a !=1:pass# 占位符,不执行任何操作else:print("hello")

pass的存在让语法格式合法,程序会正常运行:当a != 1时,跳过if分支,执行后续代码;当a == 1时,打印“hello”。

4. 练习:判断闰年

闰年的判断规则是:

  1. 能被400整除的年份是闰年;
  2. 能被4整除但不能被100整除的年份是闰年;
  3. 其他情况是平年。
year =int(input("请输入年份:"))if year %100==0:# 世纪年(如2000年、1900年)if year %400==0:print("闰年")else:print("平年")else:# 普通年if year %4==0:print("闰年")else:print("平年")

也可以简化为一行条件表达式:

year =int(input("请输入年份:"))if(year %100!=0and year %4==0)or(year %400==0):print("闰年")else:print("平年")

三、循环语句

循环语句让程序能够自动重复执行某段代码,大大提高开发效率。

Python中主要有两种循环:while循环和for循环,各自适用于不同场景。

1. while循环:“条件满足就一直做”

while循环的逻辑是:只要条件成立,就反复执行循环体,直到条件不成立时结束

基本语法:
while 循环条件: 循环体(缩进代码块) # 循环变量更新(避免无限循环)

注意:循环体中必须包含“循环变量更新”的语句,否则循环条件会一直成立,导致程序进入“无限循环”(比如while True:没有退出条件时,会一直运行)。

示例:
(1)打印1-10的整数
num =1# 初始化循环变量while num <=10:# 循环条件:num不大于10print(num) num +=1# 循环变量更新:num每次加1

执行过程:num从1开始,每次打印后加1,当num=11时,num <= 10不成立,循环结束。

(2)计算1-100的和
sum=0# 用于存储总和,初始值为0 num =1# 循环变量while num <=100:sum+= num # 等价于sum = sum + num num +=1print(sum)# 输出结果:5050
(3)计算5的阶乘(5! = 5×4×3×2×1)
result =1# 阶乘初始值为1(乘法的单位元) n =1while n <=5: result *= n # 等价于result = result × n n +=1print(result)# 输出结果:120
(4)嵌套循环:计算1! + 2! + 3! + 4! + 5!的和
sum=0# 存储阶乘总和 num =1while num <=5: factor_result =1# 存储单个阶乘的结果 i =1# 内层循环:计算num的阶乘while i <= num: factor_result *= i i +=1sum+= factor_result # 把当前阶乘结果加入总和 num +=1print(sum)# 输出结果:153

这里用到了“双重循环”:外层循环控制计算哪个数的阶乘,内层循环负责计算具体的阶乘值。嵌套循环的关键是理清每层循环的职责,避免缩进错误。

2. for循环:“遍历元素就做事”

for循环是Python中最灵活、最常用的循环,它不需要手动管理循环变量,而是直接遍历“可迭代对象”(比如列表、字符串、range生成的序列),逐个执行循环体。

基本语法:
for 循环变量 in 可迭代对象: 循环体(缩进代码块) 
  • 可迭代对象:内部包含多个元素,能逐个取出元素的对象(如range(1,10)[1,2,3]、"abc"等)。
  • Python的for循环不需要“初始化语句”“条件判断语句”“更新语句”,比其他语言更简洁。
示例:
(1)打印1-10(使用range函数)

range(start, end, step)是Python内置函数,用于生成一个整数序列:

  • start:起始值(默认0);
  • end:结束值(不包含end本身);
  • step:步长(默认1,可正可负)。
# 生成1-10的序列(包含1,不包含11)for i inrange(1,11):print(i)
(2)打印2、4、6、8、10(指定步长2)
# 从2开始,到12结束(不包含12),每次加2for i inrange(2,12,2):print(i)
(3)打印10-1(步长为负,倒序)
# 从10开始,到0结束(不包含0),每次减1for i inrange(10,0,-1):print(i)
(4)计算1-100的和(for循环更简洁)
sum=0for i inrange(1,101):sum+= i print(sum)# 输出结果:5050

相比while循环,for循环不需要手动初始化和更新循环变量,代码更简洁,不易出错。

3. 循环控制:break和continue

在循环过程中,我们可能需要提前结束循环,或者跳过某次循环,这时候就需要breakcontinue两个关键字。

(1)continue:跳过本次循环,进入下次循环

continue会直接跳过当前循环体中剩余的代码,不执行后续操作,直接进入下一次循环判断。

示例:模拟吃包子,吃到第3个时吃出虫子,跳过这个包子,继续吃后面的。

for i inrange(1,6):if i ==3:print(f"第{i}个包子吃出虫子,跳过!")continueprint(f"吃完第{i}个包子")

输出结果

吃完第1个包子 吃完第2个包子 第3个包子吃出虫子,跳过! 吃完第4个包子 吃完第5个包子 
(2)break:结束整个循环

break会直接终止当前循环,无论循环条件是否成立,都不再继续执行。

示例:模拟吃包子,吃到第3个时吃出半只虫子,直接停止吃包子。

for i inrange(1,6):if i ==3:print(f"第{i}个包子吃出半只虫子,停止吃包子!")breakprint(f"吃完第{i}个包子")

输出结果

吃完第1个包子 吃完第2个包子 第3个包子吃出半只虫子,停止吃包子! 
(3)练习:输入若干数字,求平均值(用break结束循环)

需求:持续输入数字,用分号“;”结束输入,最后计算所有输入数字的平均值。

sum=0# 总和 count =0# 输入数字的个数whileTrue:# 无限循环,直到遇到break num =input("请输入数字(输入;结束):")if num ==';':break# 输入;,结束循环 num =float(num)sum+= num count +=1if count >0:print(f"平均值为:{sum/ count}")else:print("未输入任何数字!")

这里用while True创建无限循环,通过break在输入“;”时终止循环,逻辑清晰且灵活。

四、动手实现“人生重开模拟器”

学会了顺序、条件、循环语句后,我们可以动手实现一个趣味小游戏——“人生重开模拟器”。这款游戏的核心逻辑是:通过初始属性设置、随机事件触发,模拟人生不同阶段的经历,最终生成专属人生轨迹。

1. 游戏逻辑拆解

  • 初始属性设置:颜值、体质、智力、家境(各1-10分,总和不超过20);
  • 随机生成性别:通过掷骰子(1-6)决定,单数为男孩,双数为女孩;
  • 随机生成出生点:根据家境档位和随机数,决定出生环境并修改属性;
  • 人生阶段模拟:分幼年、青年、壮年、老年阶段,每个阶段通过随机事件修改属性,触发特殊事件(如夭折)则游戏结束。

2. 完整代码

import random import sys import time # 游戏开场文案print("="*50)print("花有重开日,人无再少年")print("欢迎来到 人生重开模拟器")print("="*50)# 1. 设置初始属性(颜值、体质、智力、家境)whileTrue:print("\n请设定初始属性(可用总点数20,每项1-10分)") face =int(input("设定 颜值(1-10):")) strong =int(input("设定 体质(1-10):")) iq =int(input("设定 智力(1-10):")) home =int(input("设定 家境(1-10):"))# 验证属性合法性if face <1or face >10:print("颜值必须在1-10之间!")continueif strong <1or strong >10:print("体质必须在1-10之间!")continueif iq <1or iq >10:print("智力必须在1-10之间!")continueif home <1or home >10:print("家境必须在1-10之间!")continueif face + strong + iq + home >20:print("总点数超过20!请重新分配!")continue# 属性设置成功,退出循环print("初始属性设定完成!")print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")break# 2. 随机生成性别print("\n正在生成性别...") time.sleep(1)# 暂停1秒,增强游戏体验 gender_point = random.randint(1,6)# 掷骰子1-6if gender_point %2==1: gender ="boy"print("你是个男孩!")else: gender ="girl"print("你是个女孩!")# 3. 随机生成出生点(根据家境档位)print("\n正在生成出生点...") time.sleep(1) birth_point = random.randint(1,3)# 掷骰子1-3,细分出生场景if home ==10:print("你出生在帝都,你的父母是高官政要!") home +=1 iq +=1 face +=1elif7<= home <=9:if birth_point ==1:print("你出生在大城市,你的父母是公务员!") face +=2elif birth_point ==2:print("你出生在大城市,你的父母是大企业高管!") home +=2else:print("你出生在大城市,你的父母是大学教授!") iq +=2elif4<= home <=6:if birth_point ==1:print("你出生在三线城市,你的父母是教师!") iq +=1elif birth_point ==2:print("你出生在镇上,你的父母是医生!") strong +=1else:print("你出生在镇上,你的父母是个体户!") home +=1else:if1<= birth_point <=2:print("你出生在村里,你的父母是辛苦劳作的农民!") strong +=1 face -=2elif3<= birth_point <=4:print("你出生在穷乡僻壤,你的父母是无业游民!") home -=1else:print("你出生在镇上,你父母感情不和!") strong -=1print(f"出生后属性更新:颜值:{face},体质:{strong},智力:{iq},家境:{home}")# 4. 模拟幼年阶段(1-10岁)print("\n"+"="*50)print("开始模拟幼年阶段(1-10岁)...")print("="*50) time.sleep(1)for age inrange(1,11): info =f"\n你今年{age}岁," event_point = random.randint(1,3)# 掷骰子触发事件# 性别+家境触发的特殊事件(女孩+家境差可能被遗弃)if gender =="girl"and home <=3and event_point ==1: info +="你家里人重男轻女思想非常严重,你被遗弃了!"print(info)print("游戏结束!") sys.exit(0)# 退出程序# 体质差触发的事件(生病)elif strong <6and event_point !=3: info +="你生了一场病,"if home >=5: info +="在父母的精心照料下恢复了健康,体质略有提升!" strong +=1 home -=1# 家境消耗else: info +="你的父母没精力管你,身体状况更糟糕了!" strong -=1# 颜值差触发的事件(被小朋友孤立)elif face <4and age >=7: info +="你因为长得太丑,别的小朋友不喜欢你,"if iq >5: info +="你决定用学习填充自己,智力提升!" iq +=1else:if gender =="boy": info +="你和别的小朋友经常打架,体质提升但智力下降!" strong +=1 iq -=1else: info +="你经常被别的小朋友欺负,体质下降!" strong -=1# 智商差触发的事件(看起来傻傻的)elif iq <5: info +="你看起来傻傻的,"if home >=8and age >=6: info +="你的父母给你送到更好的学校学习,智力提升!" iq +=1elif4<= home <=7:if gender =="boy": info +="你的父母鼓励你多运动,身体素质提升!" strong +=1else: info +="你的父母鼓励你多打扮自己,颜值提升!" face +=1else: info +="你的父母为此经常吵架,随机属性下降!"if event_point ==1: strong -=1elif event_point ==2: iq -=1# 健康成长(无负面事件)else: info +="你健康成长,"if event_point ==1: info +="看起来更聪明了,智力提升!" iq +=1elif event_point ==2: info +="看起来更好看了,颜值提升!" face +=1else: info +="看起来更结实了,体质提升!" strong +=1# 打印当年经历和属性print(info)print(f"当前属性:颜值={face},体质={strong},智力={iq},家境={home}") time.sleep(1)# 暂停1秒,方便阅读print("\n"+"="*50)print("幼年阶段结束!后续可继续扩展青年、壮年、老年阶段...")print("="*50)

Read more

爆火的OpenClaw到底是个啥?一文看透这只“AI龙虾”的真面目与暗坑

爆火的OpenClaw到底是个啥?一文看透这只“AI龙虾”的真面目与暗坑

目录 前言 一、OpenClaw是什么?——它不是“最强大脑”,而是一双“手” 二、它能干什么?为什么让这么多人兴奋? 2.1 拥有“全局记忆”,它能越来越懂你 2.2 从“被动回答”到“主动干活” 2.3 深度的本地控制权 三、滤镜碎裂:这只“龙虾”背后的四个深坑 3.1 第一个坑:灾难级的安全隐患(最致命) 3.2 第二个坑:极不稳定的“办事能力” 3.3 第三个坑:令人咋舌的“烧钱”速度 3.4 第四个坑:大厂为什么不做?

By Ne0inhk
AI测试 开源项目:WHartTest v2.0.0 发布 - AI 驱动的智能测试用例生成平台

AI测试 开源项目:WHartTest v2.0.0 发布 - AI 驱动的智能测试用例生成平台

WHartTest v2.0.0 发布:AI 驱动的测试自动化平台 如果你还没听过 WHartTest,可以先用一句话理解它: WHartTest 是一个开源的 AI 驱动测试自动化平台,帮助团队把“需求理解 -> 用例生成 -> 测试执行 -> 结果回传”串成一个完整流程。 它基于 Django REST Framework + Vue 构建,融合 LangChain/LangGraph、知识库检索、MCP 工具调用等能力,目标是让测试团队更快、更稳地落地 AI。 为什么做 WHartTest? 很多团队在用 AI 做测试时会遇到几个共同问题: 1. 只能“对话”,难进真实测试流程

By Ne0inhk

Skill 构建指南:从零打造 AI 智能体扩展包

Skill 构建指南:从零打造 AI 智能体扩展包 引言 在人工智能时代,如何让智能体具备更强的专业能力和更丰富的工作流程?答案就是 Skill——一种为智能体设计的能力扩展包。本文将详细介绍如何从零开始构建符合规范的 Skill,让你的创意变成可分发的工具。 什么是 Skill? 核心定位 Skill 是被智能体加载和执行的能力扩展包,而非独立运行的应用程序。 执行模式 * Skill 在智能体的会话上下文中被动态加载 * 智能体读取 SKILL.md 的指导,调用 scripts/ 中的脚本,参考 references/ 中的文档 * Skill 的所有交互都通过智能体与用户的对话完成 Skill 提供的能力 * ✅ 专门工作流程(多步骤程序与条件逻辑) * ✅ 工具集成(文件格式与 API 的使用方式) * ✅ 领域专家知识(公司或系统特有的架构与逻辑) * ✅ 打包资源(脚本、参考、资产) Skill

By Ne0inhk
AI时代人人都是产品经理:落地流程:AI 核心功能,从需求到上线的全流程管控方法

AI时代人人都是产品经理:落地流程:AI 核心功能,从需求到上线的全流程管控方法

AI的普及正在重构产品经理的工作模式——不再依赖传统的跨部门协作瓶颈,AI可以成为产品经理的"全职助手",覆盖需求分析、原型设计、开发协同、测试验证全流程。本文将拆解AI时代产品核心功能从0到1落地的完整管控方法,让你用AI能力提升300%的落地效率。 一、需求阶段:AI辅助的需求挖掘与标准化 需求是产品的起点,AI可以帮你从海量信息中精准定位用户真实需求,避免"伪需求"浪费资源。 1. 需求挖掘:AI辅助用户洞察 传统需求调研依赖问卷、访谈,效率低且样本有限。AI可以通过以下方式快速完成用户洞察: * 结构化处理非结构化数据:用AI分析用户在社交媒体、客服对话、应用评论中的碎片化反馈,自动提炼高频需求点 * 需求优先级排序:基于KANO模型,AI可以自动将需求划分为基础型、期望型、兴奋型、无差异型四类,输出优先级列表 实战工具与示例: 使用GPT-4+Python脚本批量处理应用商店评论: import openai import pandas as

By Ne0inhk