You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:30:46