文章目录
-
- [一、顺序语句: 从上到下,依次执行](#一、顺序语句: 从上到下,依次执行)
- 二、条件语句:做选择
-
- [1. 条件语句的三种形式](#1. 条件语句的三种形式)
- [2. 缩进与代码块](#2. 缩进与代码块)
- [3. 空语句pass:占位符](#3. 空语句pass:占位符)
- [4. 练习:判断闰年](#4. 练习:判断闰年)
- 三、循环语句
-
- [1. while循环:"条件满足就一直做"](#1. while循环:“条件满足就一直做”)
-
- 基本语法:
- 示例:
-
- (1)打印1-10的整数
- (2)计算1-100的和
- [(3)计算5的阶乘(5! = 5×4×3×2×1)](#(3)计算5的阶乘(5! = 5×4×3×2×1))
- [(4)嵌套循环:计算1! + 2! + 3! + 4! + 5!的和](#(4)嵌套循环:计算1! + 2! + 3! + 4! + 5!的和)
- [2. for循环:"遍历元素就做事"](#2. for循环:“遍历元素就做事”)
- [3. 循环控制:break和continue](#3. 循环控制:break和continue)
- 四、动手实现"人生重开模拟器"
-
- [1. 游戏逻辑拆解](#1. 游戏逻辑拆解)
- [2. 完整代码](#2. 完整代码)
一、顺序语句: 从上到下,依次执行
默认情况下,Python代码的执行顺序就像我们日常做事的流程------先做第一步,再做第二步,直到所有步骤完成。这种按固定顺序执行的语句,就是顺序语句。
python
print("1")
print("2")
print("3")
#输出 1 2 3
二、条件语句:做选择
条件语句让程序拥有了"判断能力",能够根据不同的条件执行不同的逻辑。
1. 条件语句的三种形式
Python中通过if、else、elif三个关键字实现条件判断,不同形式对应不同的判断场景。
(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 > 0、a < 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. 练习:判断闰年
闰年的判断规则是:
- 能被400整除的年份是闰年;
- 能被4整除但不能被100整除的年份是闰年;
- 其他情况是平年。
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
在循环过程中,我们可能需要提前结束循环,或者跳过某次循环,这时候就需要break和continue两个关键字。
(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)