Py学习记录
Python 常规学习
Python学习笔记(一)
Python学习笔记(二)
Python学习笔记(三)
Python学习笔记(四)
Python学习笔记(五)
Python学习笔记(六)
Python学习笔记(七)
Python习题(一)
Python习题(二)
Python习题(三)
Python习题(四)
Python习题(五)
Python常见Bug
Python编程环境
Python-依赖安装(三方库)
Python-VS Code
pip-换源
py 程序转 exe
Python-打开选择文件对话框
Python 项目
Python-密码学
Python-与佛伦禅
Python-喵语翻译
Python-翻译服务器
Python-邮件发送
Python-自动签到
Python-自动签到(Post请求)
Python-自动签到(模拟操作)
Python-图片添加二维码
Python-数据可视化
Python-端口扫描器
Python-未测试项目
Python-虚拟环境
Python-临时环境
Python-venv虚拟环境
Python-Conda
Python-OpenCV
OpenCV-人脸识别
Python-PyTorch
本文档使用 MrDoc 发布
-
+
首页
Python习题(一)
## 「李逍遥大战拜月教主」  李逍遥(freeLi)大战拜月教主(BOSS),在这个游戏中,会随机生成李逍遥与拜月教主的属性,相互攻击,直到有一方的血量为0。 并且,这样的战斗采取三局两胜制,最后显示战斗结果,公布获胜方。   ### 「李逍遥大战拜月教主」V1  根据这些元素,我们要做的主要有三步: 1. 规定李逍遥和拜月教主的属性。 2. 双方攻击时,失血量根据对方的攻击来计算。 3. 如果有一方的血量减少到0以下,GAME OVER。   ``` import time #调用time模块 print('【李逍遥】血量:100攻击力:25') # 自定义李逍遥角色的血量和攻击 print('【拜月教主】血量:100攻击力:20') # 自定义拜月教主角色的血量和攻击 print('-----------------------') time.sleep(2) print('李逍遥发起了攻击,【拜月教主】剩余血量75') #人工计算拜月教主剩余血量100-25 = 75 print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量80') #人工计算李逍遥剩余血量100-20 = 80 print('-----------------------') time.sleep(2) print('李逍遥发起了攻击,【拜月教主】剩余血量50') #人工计算拜月教主剩余血量75-25 = 50 print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量60') #人工计算李逍遥剩余血量80-20= 60 print('-----------------------') time.sleep(2) print('李逍遥发起了攻击,【拜月教主】剩余血量25') #人工计算拜月教主剩余血量50-25= 25 print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量40') #人工计算李逍遥剩余血量60-20=40 print('-----------------------') time.sleep(2) print('李逍遥发起了攻击,【拜月教主】剩余血量0') #人工计算拜月教主剩余血量25-25=0,此时拜月教主血量为0,拜月教主死亡,游戏结束。 print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量20') #人工计算李逍遥剩余血量40-20=20 print('-----------------------') time.sleep(2) print('拜月教主死了,李逍遥赢了') ```  ### 「李逍遥大战拜月教主」V2  `要使用random随机数模块中的randint(a,b)函数,括号内为a,b两个数字为生成随机数的范围,a是小数字,b是大数字。` ``` #多运行几次,看看结果是不是随机生成的~ import random #调用random模块 num = random.randint(1,100) # 随机生成1-100范围内(含1和100)的一个整数,并赋值给变量a print(num) ```   ``` import time import random #也可合并写成一行:import time,random # 生成随机属性 freeLi_life = random.randint(100,150) # “freeLi_life” 代表李逍遥血量 freeLi_attack = random.randint(20,30) # “freeLi_attack” 代表李逍遥攻击 BOSS_life = random.randint(100,150) # “BOSS_life” 代表拜月教主血量 BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表拜月教主攻击 # 展示双方角色的属性 print('【李逍遥】\n'+'血量:'+str(freeLi_life)+'\n攻击:'+str(freeLi_attack)) #freeLi_life和freeLi_attack的数据类型都是整数,所以拼接时需要先用str()转换 print('------------------------') time.sleep(1) #暂停一秒再执行后续代码 print('【拜月教主】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack)) print('------------------------') # 自动PK阶段 while(freeLi_life>0) and (BOSS_life>0): freeLi_life = freeLi_life - BOSS_attack BOSS_life = BOSS_life - freeLi_attack print('李逍遥发起了攻击,【拜月教主】剩余血量'+str(BOSS_life)) #freeLi_life是整数,所以拼接时要先用str()转换 print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量'+str(freeLi_life)) print('------------------------') time.sleep(2) # 为了体现出战斗回合,这里停顿2秒 ```  ### 「李逍遥大战拜月教主」V3 1. 打印战果:每局战斗后,根据胜负平的结果打印出不同的提示。 2. 三局两胜:双方战斗三局,胜局多的为最终赢家。     ``` import time import random freeLi_score = 0 #存放李逍遥赢的局数。 BOSS_score = 0 #存放拜月教主赢的局数 #也可合并写成一行:import time,random for i in range(1,4): time.sleep(1) # 让局与局之间有较明显的有时间间隔 print(' \n——————现在进行第'+str(i)+'局,3,2,1,go!——————') # 作为局的标记 # 生成随机属性 freeLi_life = random.randint(100,150) # “freeLi_life” 代表李逍遥血量 freeLi_attack = random.randint(20,30) # “freeLi_attack” 代表李逍遥攻击 BOSS_life = random.randint(100,150) # “BOSS_life” 代表拜月教主血量 BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表拜月教主攻击 # 展示双方角色的属性 print('【李逍遥】\n'+'血量:'+str(freeLi_life)+'\n攻击:'+str(freeLi_attack)) #freeLi_life和freeLi_attack的数据类型都是整数,所以拼接时需要先用str()转换 print('------------------------') time.sleep(1) #暂停一秒再执行后续代码 print('【拜月教主】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack)) print('------------------------') # 自动PK阶段 while(freeLi_life>0) and (BOSS_life>0): freeLi_life = freeLi_life - BOSS_attack BOSS_life = BOSS_life - freeLi_attack print('李逍遥发起了攻击,【拜月教主】剩余血量'+str(BOSS_life)) #freeLi_life是整数,所以拼接时要先用str()转换 print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量'+str(freeLi_life)) print('------------------------') time.sleep(2) # 为了体现出战斗回合,这里停顿2秒 # 打印战果 if freeLi_life > 0 and BOSS_life <= 0: freeLi_score=freeLi_score+1 print('拜月教主挂了,李逍遥赢了') elif freeLi_life <= 0 and BOSS_life > 0: BOSS_score = BOSS_score +1 print('悲催,拜月教主把李逍遥干掉了!') else: print('哎呀,李逍遥和拜月教主同归于尽了!') if freeLi_score > BOSS_score : time.sleep(1) print('【 大战3个回合:李逍遥赢了!】') elif BOSS_score > freeLi_score: print('【大战3个回合:李逍遥输了!】') else: print('【大战3个回合:平局!】') ```  ### 格式化字符串  ``` print('【李逍遥】\n'+'血量:'+str(freeLi_life)+'\n攻击:'+str(freeLi_attack)) print('【拜月教主】\n'+'血量:'+str(BOSS_life)+'\n攻击:'+str(BOSS_attack)) ``` 我们使用【+】拼接字符串和变量的时候,常常要考虑变量是什么类型的数据,如果不是字符串类型的,还要先使用str()函数转换,然后再拼接。 ``` print('【李逍遥】\n血量:%s\n攻击力:%s' %( freeLi_life, freeLi_attack)) print('【拜月教主】\n血量:%s\n攻击力:%s' %(BOSS_life, BOSS_attack)) ``` 我们看到格式符%后面有一个字母,这个字母用来控制数据显示的类型。【%s】就是占住这个位置,将变量依次转换成字符串带入。 ``` import time import random freeLi_score = 0 #存放李逍遥赢的局数。 BOSS_score = 0 #存放拜月教主赢的局数 #也可合并写成一行:import time,random for i in range(1,4): time.sleep(1) # 让局与局之间有较明显的有时间间隔 print(' \n——————现在进行第'+str(i)+'局,3,2,1,go!——————') # 作为局的标记 # 生成随机属性 freeLi_life = random.randint(100,150) # “freeLi_life” 代表李逍遥血量 freeLi_attack = random.randint(20,30) # “freeLi_attack” 代表李逍遥攻击 BOSS_life = random.randint(100,150) # “BOSS_life” 代表拜月教主血量 BOSS_attack = random.randint(20,30) # “BOSS_attack” 代表拜月教主攻击 # 展示双方角色的属性 print('【李逍遥】\n血量:%s\n攻击力:%s' %( freeLi_life, freeLi_attack)) #freeLi_life和freeLi_attack的数据类型都是整数,所以拼接时需要先用str()转换 print('------------------------') time.sleep(1) #暂停一秒再执行后续代码 print('【拜月教主】\n血量:%s\n攻击力:%s' %(BOSS_life, BOSS_attack)) print('------------------------') # 自动PK阶段 while(freeLi_life>0) and (BOSS_life>0): freeLi_life = freeLi_life - BOSS_attack BOSS_life = BOSS_life - freeLi_attack print('李逍遥发起了攻击,【拜月教主】剩余血量'+str(BOSS_life)) #freeLi_life是整数,所以拼接时要先用str()转换 print('拜月教主向李逍遥发起了攻击,【李逍遥】剩余血量'+str(freeLi_life)) print('------------------------') time.sleep(2) # 为了体现出战斗回合,这里停顿2秒 # 打印战果 if freeLi_life > 0 and BOSS_life <= 0: freeLi_score=freeLi_score+1 print('拜月教主挂了,李逍遥赢了') elif freeLi_life <= 0 and BOSS_life > 0: BOSS_score = BOSS_score +1 print('悲催,拜月教主把李逍遥干掉了!') else: print('哎呀,李逍遥和拜月教主同归于尽了!') if freeLi_score > BOSS_score : time.sleep(1) print('【 大战3个回合:李逍遥赢了!】') elif BOSS_score > freeLi_score: print('【大战3个回合:李逍遥输了!】') else: print('【大战3个回合:平局!】') ```  `【%】后面的类型码用什么,取决于你希望这个【%】占住的这个位置的数据以什么类型展示出来,如果你希望它以字符串形式展示,那就写【%s】,如果你希望它以整数形式展示,那就写【%d】`
造物者W
2022年1月11日 12:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码