启程星辰大海
大宇宙航海时代,身为人类世界探索未知的拓荒者代表,欢迎您加入星际远征军的队伍。首先,完成机甲系统的交接仪式:请输入您的姓名与此次远征的梦想并且激活您的随身机甲。
class Robot:# 类的创建
def __init__(self,name):# 类的初始化方法
self.name=name # 实例属性的创建
# 类属性的创建
self.master=input('主人您好,请问我应该如何称呼您?') # 初始化中的语句
def swearing(self): # 实例方法的创建
print('{}您好,{}愿成为您手中的利剑,并宣誓毕生效忠于您'.format(self.master,self.name))# 方法的具体语句
self.dream=input('{}您有什么愿望需要我帮您实现?'.format(self.master))
def action(self):
print((self.master+'的愿望是'+self.dream+' \n')*3)
robot1=Robot('绝影机甲007号') # 类的实例化
robot1.swearing() # 实例方法的调用
robot1.action()
我们此次星际远征军的首要目标是:
# 如何在Markdown下更改字体相关信息
<font face="黑体">我是黑体字</font>
<font face="微软雅黑">我是微软雅黑</font>
<font face="STCAIYUN">我是华文彩云</font>
<font color=#0099ff size=7 face="黑体">color=#0099ff size=72 face="黑体"</font>
<font color=#00ffff size=72>color=#00ffff</font>
<font color=gray size=72>color=gray</font>
- 完善星图系统:可以一键查询星图中所有星球的基本信息与是否有人居住
- 添加探索到的未知星球:输入星球的基本信息
- 拓荒星系:当星球的状态显示为环境恶劣时,我们不可以随便在该星球上建立移民基地,需要进行环境改造
- 星际移民:当星球的环境改造已完成时,我们可以进行星际移民
根据需求,我们设定的框架如下:
class CelestialBody:
def __init__(self):
# 对实列初始化
class MapManager:
def menu(self):
# 显示选择菜单
def show_all_star(self):
# 显示星球信息
def add_star(self):
# 添加新的星球坐标
def envir_star(self):
# 星球环境改造
def build_star(self):
# 建立远征军基地
定义CelestialBody类
class CelestialBody:
#我们可以利用初始化方法__init__,让实例被创建时自动获得属性。
def __init__(self,name,position,sent,state=0):
self.name=name
self.pose=position
self.sent=sent
self.state=state#为了后续方便参数传递,状态state采用默认参数,用0来表示'环境恶劣',1来表示'环境适宜'。
star = CelestialBody('天狼星','System:8.60 ± 0.04 ly(2.64 ± 0.01 pc)','青云衣兮白霓裳,举长矢兮射天狼','无人')
print(star.sent)
显示星球具体信息
class CelestialBody:
#我们可以利用初始化方法__init__,让实例被创建时自动获得属性。
def __init__(self,name,position,sent,state=0):
self.name=name
self.pose=position
self.sent=sent
self.state=state#为了后续方便参数传递,状态state采用默认参数,用0来表示'环境恶劣',1来表示'环境适宜'。
def show_info(self):
if self.state == 0:
status = '环境恶劣'
else:
status = '环境适宜'
return '星球名称:%s 星球距离母星:%s 星球通信密码:%s 该星球%s' % (self.name, self.pose, self.sent, status)
star = CelestialBody('天狼星','System:8.60 ± 0.04 ly(2.64 ± 0.01 pc)','青云衣兮白霓裳,举长矢兮射天狼',0)
print(star.show_info())
显示结果如下:
星球名称:天狼星
星球距离母星:System:8.60 ± 0.04 ly(2.64 ± 0.01 pc)
星球通信密码:青云衣兮白霓裳,举长矢兮射天狼
该星球环境恶劣
我们可以利用def __str__(self)
直接打印出星球信息
def __str__(self):
if self.state == 0:
status = '环境恶劣'
else:
status = '环境适宜'
return '星球名称:%s 星球距离母星:%s 星球通信密码:%s 该星球%s' % (self.name, self.pose, self.sent, status)
star = CelestialBody('天狼星','System:8.60 ± 0.04 ly(2.64 ± 0.01 pc)','青云衣兮白霓裳,举长矢兮射天狼',0)
print(star) #无须再调用方法,直接打印
人机交互界面的设置
远征军的星图系统怎么能没有人机交互界面的设置呢?
class MapManager:
def menu(self):
print('''远征军的各位,欢迎使用肥鼠博士一手打造的星图系统,
宇宙茫茫星系,未知的疆域等待您的探索
希望远征军的各位有缘发现适宜人类的栖息星球。''')
while True:
print('1.查询所有星球信息\n2.添加未知星球\n3.环境改造\n4.建立基地\n5.退出星图系统\n')
choice = int(input('请输入数字选择对应的功能:'))
if choice == 1:
self.show_all_star()
# 调用对象方法时self不能忘
elif choice == 2:
self.add_star()
elif choice == 3:
self.envir_star()
elif choice == 4:
self.build_star()
elif choice == 5:
print('星图系统关闭')
break
下一步,我们需要一个一个功能的来实现:
class MapManager:
stars = []
def __init__(self):
star1 = CelestialBody('天狼星','System:8.60 ± 0.04 ly(2.64 ± 0.01 pc)','青云衣兮白霓裳,举长矢兮射天狼',0)
star2 = CelestialBody('北落师门','大约25光年','北落师门一星,在羽林西南。北者,宿在北方也;落,天之籓落也;师,众也;师门,犹军门也。长安城北门曰北落门,以象此也。',0)
star3 = CelestialBody('轩辕十四','System:79.3 ± 0.7 ly(24.3 ± 0.2 pc)','王者之星:仁慈,悲悯万物苍生,柔生德,五行属土,咸化万物',1)
self.stars.append(star1)
self.stars.append(star2)
self.stars.append(star3)
def menu(self):
print('''远征军的各位,欢迎使用肥鼠博士一手打造的星图系统,
宇宙茫茫星系,未知的疆域等待您的探索
希望远征军的各位有缘发现适宜人类的栖息星球。''')
while True:
print('1.查询所有星球信息\n2.添加未知星球\n3.环境改造\n4.建立基地\n5.退出星图系统\n')
choice = int(input('请输入数字选择对应的功能:'))
if choice == 1:
self.show_all_star()
def show_all_star(self):
for star in self.stars:
# self是实例对象的替身
print(star)
manager = MapManager()
manager.menu()
添加新的星球坐标
def add_star(self):
new_name = input('请命名未知星球:')
new_pose=input('请输入星球距离母星的坐标:')
new_sent=input('请输入星球通信密码:')
new_state=int(input('环境是否对人友好0或1:'))
newstar= CelestialBody(new_name,new_pose,new_sent,new_state)
self.stars.append(new_star)
print('录入成功!\n')