Python石头剪刀布游戏问题:条件判断失效与获胜次数统计实现
石头剪刀布游戏问题修复:条件判断失效与获胜次数统计
问题1:所有判断都进入else分支
你的代码里,gameInput是字符串列表['1','2','3'],random.choice(gameInput)返回的是字符串类型的'1'/'2'/'3',但玩家输入的pc被转成了整数类型。整数和字符串永远无法相等,导致所有if/elif条件都不成立,只能执行else里的失败逻辑。
修复方式:
把gameInput改为整数列表,直接匹配玩家输入的整数类型:
gameInput = [1, 2, 3]
问题2:无法统计获胜次数
play_game函数里的result默认是0,但只有在玩家获胜时需要将其设为1,这样main函数里的win累加才能正确统计获胜次数。平局和失败时保持result=0即可,不会影响总数统计。
修复方式:
在每个获胜的elif分支里添加result = 1,明确标记本轮获胜。
修改后的完整代码
import random def main(): gameInput = [1, 2, 3] # 改为整数列表,匹配pc的类型 win = 0 for attempt in range(1, 4): pc = int(input('Enter 1(rock), 2(paper), or 3(scissor): ')) npc = random.choice(gameInput) win += play_game(pc, npc) # 简化累加写法 print(f'You played three times, you won {win} times!') def play_game(pc, npc): result = 0 # 把数字映射为对应名称,输出更直观 choice_name = {1: 'rock', 2: 'paper', 3: 'scissor'} if pc == npc: print(f"You both chose {choice_name[npc]}, it's a tie!") elif pc == 1 and npc == 3: print(f'You chose {choice_name[pc]}, you win!') result = 1 elif pc == 2 and npc == 1: print(f'You chose {choice_name[pc]}, you win!') result = 1 elif pc == 3 and npc == 2: print(f'You chose {choice_name[pc]}, you win!') result = 1 else: print(f'npc chose {choice_name[npc]}, you lost!') return result main()
额外优化说明
- 新增
choice_name字典,把数字转成对应游戏名称,让输出结果更易读 - 用
win += play_game(pc, npc)简化累加逻辑,代码更简洁
内容的提问来源于stack exchange,提问作者NikoGuy
相关产品推荐
相关产品推荐

