Help! 三局两胜制,三局都是玩家赢,最后判敌人赢是什么鬼,求纠错QAQ
本帖最后由 不认真学习DHL 于 2023-2-16 09:00 编辑循环多次,有时间是对的,有时候是错的,尤其出现如题现象,是最后计分循环出现问题了吗?
import time,random
while True: #不确定次数的循环
player_life = random.randint(100,150)
enemy_life = random.randint(100,150)
print('玩家血量:%s;敌人血量:%s。'%(player_life,enemy_life))
print('-------------------------------')
time.sleep(1.5)
for i in range(3):
player_attack = random.randint(30,50)#玩家攻击力每次都是随机的
enemy_attack = random.randint(30,50)
print('这是第%s局游戏'%(i+1))
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('玩家血量:%s;敌人血量:%s。'%(player_life,enemy_life))
player_victory = 0 #空白计分板
enemy_victory = 0
ifplayer_life > 0 and enemy_life < player_life: #玩家大于敌人血量视为赢
player_victory += 1
print('玩家赢了(血量:%s)'%player_life)
elif enemy_life > 0and player_life < enemy_life: #敌人大于玩家血量视为赢
print('敌人赢了(血量:%s)'%enemy_life)
enemy_victory += 1
else:
print('同归于尽')
print('-------------------------------')
time.sleep(1.5)
if player_victory > enemy_victory:
print('最终结果:玩家赢了')
elif player_victory == enemy_victory:
print('最终结果:平局')
else:
print('最终结果:敌人赢了')
print('-------------------------------')
time.sleep(1.5)
again = input('是否再来一局?请回答是or否')
if again == '是':
continue
else:
break 我执行没有问题,你把你出问题的那个执行结果放上来看看
玩家血量:174;敌人血量:120。
-------------------------------
这是第1局游戏
玩家血量:137;敌人血量:80。
玩家赢了(血量:137)
-------------------------------
这是第2局游戏
玩家血量:102;敌人血量:40。
玩家赢了(血量:102)
-------------------------------
这是第3局游戏
玩家血量:60;敌人血量:1。
玩家赢了(血量:60)
-------------------------------
最终结果:玩家赢了
-------------------------------
是否再来一局?请回答是or否 isdkz 发表于 2023-2-16 09:06
我执行没有问题,你把你出问题的那个执行结果放上来看看
今天暂时跑了一个这样的异常结果:
是否再来一局?请回答是or否是
玩家血量:109;敌人血量:108。
-------------------------------
这是第1局游戏
玩家血量:63;敌人血量:64。
敌人赢了(血量:64)
-------------------------------
这是第2局游戏
玩家血量:25;敌人血量:29。
敌人赢了(血量:29)
-------------------------------
这是第3局游戏
玩家血量:-20;敌人血量:-6。
同归于尽
-------------------------------
最终结果:平局
-------------------------------
是否再来一局?请回答是or否 如果计分放在循坏的外面,错误就会更多:
import time,random
player_victory = 0 #空白计分板跳出循环外
enemy_victory = 0
while True: #不确定次数的循环
player_life = random.randint(100,150)
enemy_life = random.randint(100,150)
print('玩家血量:%s;敌人血量:%s。'%(player_life,enemy_life))
print('-------------------------------')
time.sleep(1.5)
for i in range(3):
player_attack = random.randint(30,50)#玩家攻击力每次都是随机的
enemy_attack = random.randint(30,50)
print('这是第%s局游戏'%(i+1))
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('玩家血量:%s,受到攻击-%s;敌人血量:%s,受到攻击-%s。'%(player_life,enemy_attack,enemy_life,player_attack))#for-in 循环结束
time.sleep(1.5)
ifplayer_life > 0 and enemy_life < player_life: #玩家大于敌人血量视为赢
player_victory += 1
print('玩家赢了(血量:%s)'%player_life)
elif enemy_life > 0and player_life < enemy_life: #敌人大于玩家血量视为赢
enemy_victory += 1
print('敌人赢了(血量:%s)'%enemy_life)
else:
print('同归于尽')
print('-------------------------------')
time.sleep(1.5)
if player_victory > enemy_victory:
print('最终结果:玩家赢了')
elif player_victory < enemy_victory:
print('最终结果:敌人赢了')
else:
print('最终结果:平局')
print('-------------------------------')
time.sleep(1.5)
again = input('是否再来一局?请回答是or否')
if again == '是':
continue
else:
break 本帖最后由 isdkz 于 2023-2-16 09:33 编辑
计分应该是放在 for 循环的外面,while 循环的里面,不然每次都在 for 循环里被重置为 0,
它应该在 while 循环重置才对
import time,random
while True: #不确定次数的循环
player_life = random.randint(100,150)
enemy_life = random.randint(100,150)
player_victory = 0 #空白计分板 这个应该放在 for 循环的外面
enemy_victory = 0
print('玩家血量:%s;敌人血量:%s。'%(player_life,enemy_life))
print('-------------------------------')
time.sleep(1.5)
for i in range(3):
player_attack = random.randint(30,50)#玩家攻击力每次都是随机的
enemy_attack = random.randint(30,50)
print('这是第%s局游戏'%(i+1))
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('玩家血量:%s;敌人血量:%s。'%(player_life,enemy_life))
ifplayer_life > 0 and enemy_life < player_life: #玩家大于敌人血量视为赢
player_victory += 1
print('玩家赢了(血量:%s)'%player_life)
elif enemy_life > 0and player_life < enemy_life: #敌人大于玩家血量视为赢
print('敌人赢了(血量:%s)'%enemy_life)
enemy_victory += 1
else:
print('同归于尽')
print('-------------------------------')
time.sleep(1.5)
if player_victory > enemy_victory:
print('最终结果:玩家赢了')
elif player_victory == enemy_victory:
print('最终结果:平局')
else:
print('最终结果:敌人赢了')
print('-------------------------------')
time.sleep(1.5)
again = input('是否再来一局?请回答是or否')
if again == '是':
continue
else:
break isdkz 发表于 2023-2-16 09:30
计分应该是放在 for 循环的外面,while 循环的里面,不然每次都在 for 循环里被重置为 0,
它应该在 whi ...
懂了 运行了一下,你这还有问题,双方血都是负数已经同归于尽的情况下最后还是会说谁输谁赢 dscm123 发表于 2023-2-16 19:57
运行了一下,你这还有问题,双方血都是负数已经同归于尽的情况下最后还是会说谁输谁赢
这个的逻辑就是三局两胜,虽然最后都变成了负数,但是要综合三局得出最终结果。
页:
[1]