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

Python单区块内R/B/G出现次数统计问题及选举模拟实现

解决选举模拟程序的区块统计问题

核心问题修正

当前代码中red.count(red)的逻辑完全错误——它只是统计单个字符'R'里的'R'数量(结果永远为1),根本没有遍历当前区块的网格数据。要统计当前区块的R、B、G数量,需要遍历整个world二维列表,逐个统计元素类型。

修正后的完整代码

import random

# 定义队伍标识
red = 'R'
blue = 'B'
undecided = 'G'
teams = [red, blue, undecided]
world = []

# 获取网格大小
WORLDSIZE = int(input('请输入世界尺寸(y x y):'))


def createWorld():
    for i in range(WORLDSIZE):
        row = []
        for j in range(WORLDSIZE):
            voter = random.choice(teams)
            row.append(voter)
        world.append(row)


def countCurrentBlock():
    # 初始化当前区块的计数器
    red_cnt = 0
    blue_cnt = 0
    undecided_cnt = 0
    # 遍历整个网格统计当前区块数据
    for row in world:
        red_cnt += row.count(red)
        blue_cnt += row.count(blue)
        undecided_cnt += row.count(undecided)
    return red_cnt, blue_cnt, undecided_cnt


def printWorld():
    print('\n当前选举情况:')
    for row in world:
        print(row)
    # 获取并打印当前区块的统计结果
    r, b, g = countCurrentBlock()
    print('\n当前统计结果:')
    print(f'红方选民:{r}')
    print(f'蓝方选民:{b}')
    print(f'未决定选民:{g}')
    print(' ')


# 初始化并打印初始区块
createWorld()
printWorld()

关键说明

  • countCurrentBlock函数专门负责统计当前区块的各队伍数量:通过遍历每一行,用列表count方法统计每行对应字符数,累加得到全局总数,完全不涉及历史区块数据。
  • 后续可以基于这个统计函数,进一步实现区块更新逻辑(比如判断多数队伍、按规则变更选民类型等)。

内容的提问来源于stack exchange,提问作者Mars

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:29