一、 顺序语句
在 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.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 循环控制关键字: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循环用于模拟逐年经历的人生。