python基础语法(2) + 人生重开模拟器的部分实现 ----- 笔记分享

embedded/2025/1/15 20:32:55/

目录:

(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)

http://www.ppmy.cn/embedded/154187.html

相关文章

YOLOv10-1.1部分代码阅读笔记-downloads.py

downloads.py ultralytics\utils\downloads.py 目录 downloads.py 1.所需的库和模块 2.def is_url(url, checkFalse): 3.def delete_dsstore(path, files_to_delete(".DS_Store", "__MACOSX")): 4.def zip_directory(directory, compressTrue, ex…

抢十八游戏

前言 我国民国一直流传着一个名叫“抢十八”的抢数游戏&#xff1a;参与游戏的两人从1开始轮流报数&#xff0c;每次至少报1个数&#xff0c;最多报2个数&#xff0c;每人报的每个数不得与自已报过的或对方报过的重复&#xff0c;也不得跳过任何一个数。谁先报到18&#xff0c…

ros2笔记-6.5 使用ros2_control驱动机器人

ros2_control 是使用ros2进行机器人控制的框架。简化硬件的集成。 6.5.1 ros2_control安装 为什么要用ros2_contrl.书上、视频上小鱼老师介绍的比较清楚&#xff0c;这里放个control框架图。 安装&#xff1a; sudo apt install ros-$ROS_DISTRO-ros2-control sudo apt ins…

【C++学习篇】红黑树 从入门到进阶

目录 1.红黑树的概念 1.1红黑树的规则 1.2红黑树的效率 2. 红黑树的实现 2.1 红黑树的结构 2.2红黑树的插入 2.2.1红黑树插入&#xff0c;旋转的一些细节 2.2.1.1 u&#xff08;uncle&#xff09;不存在 &#xff0c;c为p的左孩子&#xff08;单旋变色&#xff09; 2.2.…

springmvc的获取请求数据

在使用 SpringMVC 开发 web 应用时&#xff0c;我们经常需要从用户的请求中获取数据。不管是表单提交、查询参数&#xff0c;还是路径上的数据&#xff0c;SpringMVC 都为我们提供了简单而强大的方式来获取这些数据。 1. 使用 RequestParam 获取查询参数 基本使用&#xff1a…

C语言基本知识复习浓缩版:控制语句--分支

选择结构 if语句 if控制语句 #include <stdio.h>int main() { int hour; float money; printf("请输入上网小时数&#xff1a;"); scanf("%d", &hour); if (hour <10) { money 30; }else if (hour >10 && hour <50) { mone…

C# PDF下载地址转图片(Base64 编码)

实现思路&#xff1a; 步骤一、根据PDF地址下载pdf文件保存为临时文件&#xff0c;获得pdf文件的byte[]数组 /// 从指定的 URL 下载 PDF 文件public byte[] DownloadPdf(string url){try{using (WebClient client new WebClient()){return client.DownloadData(url);}}catc…

Codeforces Round 976 (Div. 2) and Divide By Zero 9.0(A-E)

链接&#xff1a;Dashboard - Codeforces Round 976 (Div. 2) and Divide By Zero 9.0 - Codeforces A. Find Minimum Operations 思路 可以观察发现这里有个进制的思想&#xff0c;转换为k进制把每位数相加即可 代码 void solve(){int n,k;cin>>n>>k;if(k1){…