文章目录
人生重开模拟器是由VickScarlet上传至GitHub的一款简单的文字网页游戏。

玩家点击“立即重开”并设置角色的初始属性后,程序就会随机为玩家生成对应的人生经历。

下面我们实现一个简化版的人生重开模拟器,主要目的在于熟悉Python的语法。
初始界面可以自由发挥,这里博主就随便打印一下。
代码如下:
# 打印初始界面
print('+-------------------------------------------+')
print('| |')
print('| >>人生重开模拟器<< |')
print('| |')
print('| 这垃圾人生一秒也不想待了 |')
print('| |')
print('+-------------------------------------------+')
进入游戏后第一步就是设置初始属性,此处设定以下四个属性:
我们规定每个属性的范围为1 - 10,并且这四个属性的总和不能超过20,如果玩家输入的初始属性不合理,则提示玩家输入有误并要求重新输入。体现在代码中就是,玩家输入属性后通过if语句判断输入的属性是否合法,如果不合法则通过while语句要求玩家重新进行输入。
代码如下:
# 设置初始属性
# 颜值、体质、智力、家境(总和不能超过20,每一项取值在1-10之间)
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 < 1 or face > 10:
print('颜值设置有误!')
continue
if strong < 1 or strong > 10:
print('体制设置有误!')
continue
if iq < 1 or iq > 10:
print('智力设置有误!')
continue
if home < 1 or home > 10:
print('家境设置有误!')
continue
if face + strong + iq + home > 20:
print('属性总和超过了20,设置有误!')
continue
print('初始属性输入完毕!')
print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')
break
关于角色的性别,我们可以随机生成一个1 - 6的整数,类似于掷色子。
性别设置后需要借助一个变量将角色的性别保存起来,因为后续男孩和女孩可能会触发不同的事件。
代码如下:
# 设置角色性别
point = random.randint(1, 6)
if point % 2 == 1:
gender = 'boy'
print('你是个男孩')
else:
gender = 'girl'
print('你是个女孩')
说明一下:
random.randint(begin, end)可以生成一个begin - end之间的随机整数。import 模块名的方式将对应的模块导入进来,导入模块后以模块名.xxx的方式就能使用该模块中的函数或变量。设置角色的出生点时,可以根据角色的家境分为四个档位:
除了将角色的出生点按照家境分为四个档位之外,还可以再生成一个随机数,对每一档的内部再进行一次细分,最终得到角色的出生点,此处涉及的也就是一些if条件判断而已。
代码如下:
# 设置角色出生点
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}岁, '
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 >= 7 and age >= 6:
info += '你的父母把你送到更好的学校学习'
iq += 1
elif 4 <= home <= 6:
if gender == 'boy':
info += '你的父母鼓励你多运动, 争取成为运动员'
strong += 1
else:
info += '你的父母鼓励你多打扮自己'
face += 1
else:
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:
info += '这一年没有特别的事情发生'
# 打印这一年发生的事情
print(info)
print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')
print('---------------------------------------------')
# 为了方便观察, 加一个sleep
time.sleep(2)
说明一下:
sys.exit(退出码)的方式让程序直接退出。time.sleep(秒数)的方式让程序暂停若干秒。效果展示

说明一下:
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO