版本3.0:打印战果,三局两胜
import time,random
# 生成双方角色,并生成随机属性。
player_life = random.randint(100,150)
player_attack = random.randint(30,50)
enemy_life = random.randint(100,150)
enemy_attack = random.randint(30,50)
# 展示双方角色的属性
print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack))
print('------------------------')
time.sleep(1)
print('【敌人】\n'+'血量:'+str(enemy_life)+'\n攻击:'+str(enemy_attack))
print('------------------------')
time.sleep(1)
# 双方PK
while player_life > 0 and enemy_life > 0:
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('你发起了攻击,【玩家】剩余血量'+str(player_life))
print('敌人向你发起了攻击,【敌人】剩余血量'+str(enemy_life))
print('-----------------------')
time.sleep(1.5)
# 打印战果
if player_life > 0 and enemy_life <= 0:
print('敌人死翘翘了,你赢了')
elif player_life <= 0 and enemy_life > 0:
print('悲催,敌人把你干掉了!')
else:
print('哎呀,你和敌人同归于尽了!')
好啦,我们继续前进。版本3.0也只剩最后的“三局两胜”了,准备好迎接最后的挑战了吗?
首先我们来看,三局战斗也是一个可以循环的结构,且循环次数是固定的,所以要用到for循环。
现在,你有思路了吗?尝试把代码打出来吧,让战斗循环三局。(先不用统计最后的结果)
给两个提示:1.想清楚哪些代码要嵌套到for循环里,即一局战斗里包括什么信息。确定了for写在哪里之后,一句战斗包含的所有信息都要缩进;2.细节也需要留意,如局与局之间要怎么区分开来(时间间隔&打印局数信息)
1
import time,random
2
3
for i in range(1,4):
4
time.sleep(1.5) # 让局与局之间有较明显的有时间间隔
5
print(' \n——————现在是第'+str(i)+'局,ready go!——————') # 作为局的标记
6
7
player_life = random.randint(100,150)
8
player_attack = random.randint(30,50)
9
enemy_life = random.randint(100,150)
10
enemy_attack = random.randint(30,50)
11
12
# 展示双方角色的属性
13
print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack))
14
print('------------------------')
15
time.sleep(1)
16
print('【敌人】\n'+'血量:'+str(enemy_life)+'\n攻击:'+str(enemy_attack))
17
print('------------------------')
18
time.sleep(1)
所以老师的答案是这样子的,需要注意的是最终判断结果要放在for循环外面,也就是不用缩进。
import time,random
player_victory = 0
enemy_victory = 0
for i in range(1,4):
time.sleep(2) # 让局与局之间有较明显的有时间间隔
print(' \n——————现在是第'+str(i)+'局——————') # 作为局的标记
player_life = random.randint(100,150)
player_attack = random.randint(30,50)
enemy_life = random.randint(100,150)
enemy_attack = random.randint(30,50)
# 展示双方角色的属性
print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack))
print('------------------------')
time.sleep(1)
print('【敌人】\n'+'血量:'+str(enemy_life)+'\n攻击:'+str(enemy_attack))
print('------------------------')
time.sleep(1)
# 双方PK
while player_life > 0 and enemy_life > 0:
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('你发起了攻击,【玩家】剩余血量'+str(player_life))
print('敌人向你发起了攻击,【敌人】剩余血量'+str(enemy_life))
print('-----------------------')
time.sleep(1.5)
#打印最终战果
if player_life > 0 and enemy_life <= 0:
player_victory += 1
print('敌人死翘翘了,你赢了!')
elif player_life <= 0 and enemy_life > 0:
enemy_victory += 1
print('悲催,敌人把你干掉了!')
else:
print('哎呀,你和敌人同归于尽了!')
if player_victory > enemy_victory :
time.sleep(1)
print('【最终结果:你赢了!】')
elif enemy_victory > player_victory:
print('【最终结果:你输了!】')
else:
print('【最终结果:平局!】')