目录:
(1)顺序语句
(2)条件语句
(3)循环语句
1. 顺序语句
默认情况下,python代码执行的顺序是从上到下一次进行的
2. 条件语句
2.1 语法格式
(1) if
if expression:do_something1do_something2 next_something
如果expression为Ture,则执行 do_something1,do_something2 ,next_something
如果expression为False,则只执行next_something,不执行do_something1,do_something2
(2)if-else
if expression:do_something1 else:do_something2
如果expression为Ture,则执行 do_something1
如果expression为False,则执行do_something2
(3)if-elif-else
if expression1:do_something1 elif expression2:do_something2 else:do_something3
不另做解释;
2.2 缩进和代码块
代码块值得是一组放在一起执行的代码
在python中使用缩进表示代码块,不同级别的缩进,程序的执行效果是不同的
可以理解为C语言中的{}的作用
2.3 空语句pass
pass表示空语句,并不会对程序的执行有任何的影响,只是战歌位置,保持python语法格式符合要求
a = int(input("输入一个数字")) if a != 1:pass else:print("damn it")
3. 循环语句
3.1 while循环
基本语法格式
while 条件:循环体
-
条件为真,则执行循环体代码
-
条件为假,则结束循环
代码示例:打印1-10的整数
num = 1 while num <= 10:print(num)num += 1
代码示例:打印1-100的和
sum = 0 num = 1 while num <= 100:sum += numnum += 1 print(sum)
3.2 for循环
基本语法格式
for 循环变量 in 可迭代对象:循环体
可迭代对象:是一个特殊的变量~内部包含了很多其他的值
注意:
-
python的for和其他语言不同,没有"初始化语句","循环条件判定语句","循环变量更新语句",而是更加简单
-
所谓的"可迭代对象",值得是"内部包含多个元素,能一个一个把元素取出来的特殊变量"
代码示例:打印1-10
for i in range(1,11):print(i)
-
使用range函数,能够生成一个可多次额大对象,生成的范围是[1,11),也就是[1,10]
代码实例:打印2,4,6,8,10
for i in range(2,12,2):print(i)
-
通过range函数的第三个参数,可以指定迭代的时候的"步长",也就是一次让循环加"几"
代码示例:打印10-1
for i in range(10,0,-1):print(i)
-
range的步长也可以设置成负数
3.3 continue
continue 表示结束这次循环,进入下次循环
代码示例:
for i in range(1,6):if i == 3:continueprint(f"吃完第{i}个包子")
3.4 break
break 表示结束整个循环
代码示例:
for i in range(1,6):if i == 3:breakprint(f"吃完第{i}个包子")
代码示例:输入若干个数字,求平均值,使用"分号"作为结尾
sum = 0 count = 0 while True:num = input("请输入数字:")if num == ';':breaknum = float(num)sum += numcount += 1 print(sum / count)
5. "人生重开模拟器"的实现------综合案例
编程里面的合法和非法指的是否合理,是否有效 !
实现一个简化版本的人生重开模拟器~
1.游戏开始的时候,设定初始属性~
2.开始游戏,随机生成性别和出生点~
3.针对每一年,都生成人生的经历~~(依靠一定的随机因素 + 当前游戏角色的相关属性)
5.1 设置初始属性
在游戏中我们设置四个属性
-
颜值(face)
-
体质(strong)
-
智力(iq)
-
家境(home)
我们约定好每个属性的范围为[1,10],并且综合不能超过20
如果玩家输入的初始属性不合理,就提示输入有误,重新输入
5.2 设置性别
5.3 设置出生点
5.4 针对每一岁,生成人生经历
按照年龄,把人生阶段分成四个阶段:
-
幼年阶段[1,10]
-
青年阶段[11,20]
-
壮年阶段[21,50]
-
老年阶段50岁以上
每个阶段都会有不同的精力和事件发生:
-
幼年阶段可塑性强,体质\颜值\智力都会有较快变化
-
青年阶段主要是求学,同时父母一辈会有明显变化,智力和家境会有明显变化
-
壮年阶段相对平稳,属性变化不大,主要是一些随机事件影响到属性
-
老年阶段体质\颜值\智力都会显著退化,并且随着年龄的上升,疾病/死亡的风险逐渐升高
此处我们以幼年为例,简单实现以下这里的处理逻辑:
-
使用for循环,按照年龄循环起来
-
针对每一年,先掷一次[1,3]的色子,根据不同的随机数之,来触发不同的事件
-
根据性别\年龄等各种属性,来触发不同的事件,这里都是用if - else的方式来实现
-
不同的事件可能会对属性有正面/负面的影响
-
在每一年的最后,打印这一年遇到的事情
-
如果夭折,则直接sys.exit(0) 退出程序
-
使用time.sleep(1) 使程序暂停执行1s,方便观察程序结果
最终代码如下:
# 人生重开模拟器 import random import sys import time print("+------------------------------------------------------------+") print("| |") print("| 花有重开日,人物在少年 |") print("| |") print("| 欢迎来到,人生重开模拟器 |") print("| |") print("+------------------------------------------------------------+") # 设置属性 # 我们约定好每个属性的范围为[1,10],并且综合不能超过20 # 使用循环,使玩家在输入错误的时候,可以重新输入 while True:print("请设置初始属性(可用点数总数为 20)")face = int(input("请输入颜值(1-10):"))strong= int(input("请输入体质(1-10):"))iq = int(input("请输入智力(1-10):"))home = int(input("请输入家境(1-10):")) # 通过条件判断语句,对于用户输入的属性做出校验检查if face > 10 or face < 1:print("颜值属性设置有误")continueif strong > 10 or strong < 1:print("体质属性设置有误")continueif iq > 10 or iq < 1:print("智力属性设置有误")continueif home > 10 or home < 1:print("家境属性设置有误")continueif face + strong + iq + home > 20:print("总的属性和超过了20,也是设置有误!")continue # 如果当前上面的条件都没有被触发,则认为玩家输入的数据是合法的# 此时就可以跳出循环结束输入了print("初始属性输入完毕!")print(f"颜值:{face} , 体质:{strong} , 智力:{iq} , 家境:{home}")break # 随机生成角色的性别 # 使用 random.randint(beg,end),就能生成[beg,end]的随机整数 point = random.randint(1,6) # random.randint # random 是一个python中的模块!相当于自带的头文件 if point % 2 == 0:gender = 'boy'print("你是个男孩.") else:gender = 'girl'print("你是个女孩.") # 设置角色的出生点 # 为了简单,就直接生成 1-3 的随机数 point = random.randint(1,3) if home == 10:# 第一档print('你出生在帝都,你的父母是高官政要.')home += 1iq += 1face += 1 elif 7 <= home <= 9:# 第二档if point == 1:print('你出生在大城市,父母是公务员.')face += 2elif point == 2:print('你出生在大城市,父母是企业高管.')home += 2else:print('你出生在大城市,父母是中可达的教授.')iq += 2 elif 4 <= home <= 6:# 第三档if point == 1:print('你出现在三线城市,父母是批发商.')strong += 1elif point == 2:print('你出生在镇上,你的父母是老师.')iq += 1else:print('你出生在农村,父母是个体户.')home += 1 else:#第四档if point == 1:print('你出生在农村,父母是辛苦劳作的农民.')strong += 1face -= 2elif point == 2:print('你出生在穷乡僻壤,你的父母是无业游民.')home -= 1else:print('你出现在镇上,但你的父母感情不合.')strong -= 1 print(f'颜值:{face} , 体质:{strong} , 智力:{iq} , 家境:{home}') # 幼年阶段 for age in range(1,11):# 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印info = f'你今年{age}岁.'# 生成一个[1,3]的随机整数point = random.randint(1,3)# 接下来编写各种事件的代码# 性别触发的事件if gender == 'girl' and home <= 3 and point == 1:info += '你的家里人重男轻女思想非常严重,你被遗弃.'print(info)print('游戏结束')sys.exit(0) # 体质触发的事件elif strong < 6 and point < 3:info += '你生了一场病'if home >= 5:info += '在你父母的悉心照料下,你康复了.'strong += 1home -= 1else:info += '你的父母没精力管你,你的身体状况更糟糕了.'strong -= 1# 颜值触发的事件elif face <= 4 and age >= 7:info += '你长得太丑了,同学都不喜欢你.'if iq > 5:info += '你决定用学习填充自己!'iq += 1else:if gender == 'boy':info += '你和别的同学经常打架.'strong += 1iq -= 1else:info += '你经常被其他同学欺负.'strong -= 1# 智力触发的事件elif iq < 5:info += '你头顶尖尖的,傻傻的.'if home >= 8 and age >= 6:info += '你的父母把你送到更好的学校学习.'iq += 1elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动,争取成为运动员.'strong += 1else:info += '你的父母鼓励你多打扮自己.'face += 1else:# 家境<4info += '你的父母经常为你头尖尖而吵架.'if point == 1:strong -= 1elif point == 2:iq -= 1else:pass# 健康成长事件else:info += '你健康成长.'if point == 1:info += '你看起来更结实了.'strong += 1elif point == 2:info += '你看起来更好看了.'face += 1else:# 无事发生pass#打印这一年发生的事情print(info)print(f'颜值:{face} , 体质:{strong} , 智力:{iq} , 家境:{home}')print('----------------------------------------------------')# 为了方便观察,加一个小小的暂停操作time.sleep(5)