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

文章目录

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

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

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

二、条件语句:做选择

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

1. 条件语句的三种形式

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

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

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

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

注意

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. 缩进与代码块

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

正确理解缩进:
python 复制代码
# 代码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的代码块。
缩进嵌套:

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

python 复制代码
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中的"空语句",不影响程序执行,只用于保证语法格式正确。

错误示例

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

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

正确示例

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. 其他情况是平年。
python 复制代码
year = int(input("请输入年份:"))
if year % 100 == 0:
    # 世纪年(如2000年、1900年)
    if year % 400 == 0:
        print("闰年")
    else:
        print("平年")
else:
    # 普通年
    if year % 4 == 0:
        print("闰年")
    else:
        print("平年")

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

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

三、循环语句

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

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

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

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

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

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

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

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

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

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

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

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

基本语法:
python 复制代码
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,可正可负)。
python 复制代码
# 生成1-10的序列(包含1,不包含11)
for i in range(1, 11):
    print(i)
(2)打印2、4、6、8、10(指定步长2)
python 复制代码
# 从2开始,到12结束(不包含12),每次加2
for i in range(2, 12, 2):
    print(i)
(3)打印10-1(步长为负,倒序)
python 复制代码
# 从10开始,到0结束(不包含0),每次减1
for i in range(10, 0, -1):
    print(i)
(4)计算1-100的和(for循环更简洁)
python 复制代码
sum = 0
for i in range(1, 101):
    sum += i
print(sum)  # 输出结果:5050

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

3. 循环控制:break和continue

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

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

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

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

python 复制代码
for i in range(1, 6):
    if i == 3:
        print(f"第{i}个包子吃出虫子,跳过!")
        continue
    print(f"吃完第{i}个包子")

输出结果

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

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

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

python 复制代码
for i in range(1, 6):
    if i == 3:
        print(f"第{i}个包子吃出半只虫子,停止吃包子!")
        break
    print(f"吃完第{i}个包子")

输出结果

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

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

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

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

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

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

1. 游戏逻辑拆解

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

2. 完整代码

python 复制代码
import random
import sys
import time

# 游戏开场文案
print("=" * 50)
print("花有重开日,人无再少年")
print("欢迎来到 人生重开模拟器")
print("=" * 50)

# 1. 设置初始属性(颜值、体质、智力、家境)
while True:
    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 < 1 or face > 10:
        print("颜值必须在1-10之间!")
        continue
    if strong < 1 or strong > 10:
        print("体质必须在1-10之间!")
        continue
    if iq < 1 or iq > 10:
        print("智力必须在1-10之间!")
        continue
    if home < 1 or home > 10:
        print("家境必须在1-10之间!")
        continue
    if 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-6
if 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 += 1
elif 7 <= home <= 9:
    if birth_point == 1:
        print("你出生在大城市,你的父母是公务员!")
        face += 2
    elif birth_point == 2:
        print("你出生在大城市,你的父母是大企业高管!")
        home += 2
    else:
        print("你出生在大城市,你的父母是大学教授!")
        iq += 2
elif 4 <= home <= 6:
    if birth_point == 1:
        print("你出生在三线城市,你的父母是教师!")
        iq += 1
    elif birth_point == 2:
        print("你出生在镇上,你的父母是医生!")
        strong += 1
    else:
        print("你出生在镇上,你的父母是个体户!")
        home += 1
else:
    if 1 <= birth_point <= 2:
        print("你出生在村里,你的父母是辛苦劳作的农民!")
        strong += 1
        face -= 2
    elif 3 <= birth_point <= 4:
        print("你出生在穷乡僻壤,你的父母是无业游民!")
        home -= 1
    else:
        print("你出生在镇上,你父母感情不和!")
        strong -= 1

print(f"出生后属性更新:颜值:{face},体质:{strong},智力:{iq},家境:{home}")

# 4. 模拟幼年阶段(1-10岁)
print("\n" + "=" * 50)
print("开始模拟幼年阶段(1-10岁)...")
print("=" * 50)
time.sleep(1)

for age in range(1, 11):
    info = f"\n你今年{age}岁,"
    event_point = random.randint(1, 3)  # 掷骰子触发事件
    
    # 性别+家境触发的特殊事件(女孩+家境差可能被遗弃)
    if gender == "girl" and home <= 3 and event_point == 1:
        info += "你家里人重男轻女思想非常严重,你被遗弃了!"
        print(info)
        print("游戏结束!")
        sys.exit(0)  # 退出程序
    
    # 体质差触发的事件(生病)
    elif strong < 6 and event_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 event_point == 1:
                strong -= 1
            elif event_point == 2:
                iq -= 1
    
    # 健康成长(无负面事件)
    else:
        info += "你健康成长,"
        if event_point == 1:
            info += "看起来更聪明了,智力提升!"
            iq += 1
        elif event_point == 2:
            info += "看起来更好看了,颜值提升!"
            face += 1
        else:
            info += "看起来更结实了,体质提升!"
            strong += 1
    
    # 打印当年经历和属性
    print(info)
    print(f"当前属性:颜值={face},体质={strong},智力={iq},家境={home}")
    time.sleep(1)  # 暂停1秒,方便阅读

print("\n" + "=" * 50)
print("幼年阶段结束!后续可继续扩展青年、壮年、老年阶段...")
print("=" * 50)
相关推荐
雨季6664 小时前
构建 OpenHarmony 简易文字行数统计器:用字符串分割实现纯文本结构感知
开发语言·前端·javascript·flutter·ui·dart
雨季6664 小时前
Flutter 三端应用实战:OpenHarmony 简易倒序文本查看器开发指南
开发语言·javascript·flutter·ui
进击的小头5 小时前
行为型模式:策略模式的C语言实战指南
c语言·开发语言·策略模式
天马37985 小时前
Canvas 倾斜矩形绘制波浪效果
开发语言·前端·javascript
Tansmjs5 小时前
C++与GPU计算(CUDA)
开发语言·c++·算法
喵手5 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
qx095 小时前
esm模块与commonjs模块相互调用的方法
开发语言·前端·javascript
Suchadar5 小时前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大5 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
哈__6 小时前
多模融合 一体替代:金仓数据库 KingbaseES 重构企业级统一数据基座
数据库·重构