一、 顺序语句
在 Python 中,代码默认的执行顺序是从上到下,依次执行 。这种结构清晰、无歧义的执行方式称为顺序语句。
核心概念:
- 执行顺序是编程的基础,计算机严格按照代码的书写顺序执行指令。
- 安排正确的任务顺序是程序逻辑正确的关键。
类比理解:
就像人生的典型顺序:上学 -> 工作 -> 结婚 -> 生子。如果顺序错乱,就会带来问题。
二、 条件语句(分支语句)
条件语句让程序具备了基础的逻辑判断能力,能够表达"如果...否则..."的语义,使程序根据不同的条件走向不同的分支。
2.1 什么是条件语句?
一个生活化的例子:
如果 我认真敲代码 我就 很容易找到工作 否则 我就 容易毕业就失业
这里的"我认真敲代码"就是条件。条件成立(为真)则执行一个分支,不成立(为假)则执行另一个分支。
2.2 语法格式
Python 使用 if, elif, else 关键字来构建条件语句,其语法与其他语言有显著区别:
-
if语句if expression: do_something1 do_something2 next_something- 如果
expression为True,则执行do_something1和do_something2。 - 如果
expression为False,则跳过它们,直接执行next_something。
- 如果
-
if - else语句if expression: do_something1 else: do_something2- 如果
expression为True,执行do_something1。 - 如果
expression为False,执行do_something2。
- 如果
-
if - elif - else语句(多分支)if expression1: do_something1 elif expression2: do_something2 else: do_something3- 检查
expression1,为True则执行do_something1,后续分支不再检查。 - 若
expression1为False,则检查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")
如果没有 pass,if 分支下为空,Python 解释器会报语法错误。
2.5 练习
- 判断奇数:输入一个整数,判断其是否为奇数。
- 判断正负:输入一个整数,判断它是正数、负数还是零。
- 判断闰年 :输入一个年份,判断它是否为闰年。
- 闰年规则:能被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 循环控制关键字:break 与 continue
-
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循环用于模拟逐年经历的人生。