目录:
(1)顺序语句
(2)条件语句
(3)循环语句
1. 顺序语句
默认情况下,python代码执行的顺序是从上到下一次进行的
2. 条件语句
2.1 语法格式
(1) if
if expression: do_something1 do_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 += num num += 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: continue print(f"吃完第{i}个包子")
3.4 break
break 表示结束整个循环
代码示例:
for i in range(1,6): if i == 3: break print(f"吃完第{i}个包子")
代码示例:输入若干个数字,求平均值,使用"分号"作为结尾
sum = 0 count = 0 while True: num = input("请输入数字:") if num == ';': break num = float(num) sum += num count += 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("颜值属性设置有误") continue if strong > 10 or strong < 1: print("体质属性设置有误") continue if iq > 10 or iq < 1: print("智力属性设置有误") continue if home > 10 or home < 1: print("家境属性设置有误") continue if 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 += 1 iq += 1 face += 1 elif 7 <= home <= 9: # 第二档 if point == 1: print('你出生在大城市,父母是公务员.') face += 2 elif point == 2: print('你出生在大城市,父母是企业高管.') home += 2 else: print('你出生在大城市,父母是中可达的教授.') iq += 2 elif 4 <= home <= 6: # 第三档 if point == 1: print('你出现在三线城市,父母是批发商.') strong += 1 elif point == 2: print('你出生在镇上,你的父母是老师.') iq += 1 else: print('你出生在农村,父母是个体户.') home += 1 else: #第四档 if point == 1: print('你出生在农村,父母是辛苦劳作的农民.') strong += 1 face -= 2 elif point == 2: print('你出生在穷乡僻壤,你的父母是无业游民.') home -= 1 else: 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 += 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: # 家境<4 info += '你的父母经常为你头尖尖而吵架.' if point == 1: strong -= 1 elif point == 2: iq -= 1 else: pass # 健康成长事件 else: info += '你健康成长.' if point == 1: info += '你看起来更结实了.' strong += 1 elif point == 2: info += '你看起来更好看了.' face += 1 else: # 无事发生 pass #打印这一年发生的事情 print(info) print(f'颜值:{face} , 体质:{strong} , 智力:{iq} , 家境:{home}') print('----------------------------------------------------') # 为了方便观察,加一个小小的暂停操作 time.sleep(5)