Fork me on GitHub

美国大选科普加写代码预(找)测(乐)比(子)分

大洋彼岸的大选,简直在国内是春晚一样的存在。

看到朋友圈有预测大选比分的,突然好奇,最终比分会是如何,出于吃瓜群众的好奇,敲了如下代码,博自己一乐,也让自己有点参与感。

 

先简单介绍下如何算赢得大选:

选举人制度:根据人口不同,每个州的选举人数量也不同,人数越多,选举人越多。

赢家通吃:以州为单位,获得票数更多的赢家,通吃这州的所有选举人票。

最终选举人票多的赢得大选胜利(所以不用关注支持率,只看候选人的选举人票数即可)。

一共538张选举人票,谁到270谁就赢了。

 

 

 

 

 

 

我看时候是238:213,拜登领先,如果只论摇摆州(浅色)的胜负,那么如下代码成立(深色的有反转则代码失效)。

 

#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: lms
@file: predict_votes_results.py
@time: 2020/11/4 23:29
@desc: 
"""
import itertools


def predict():
    votes = [3, 6, 10, 15, 16, 16, 20]

    votes_len = list(map(str, list(range(len(votes)))))  # 票的单个字符序列
    res = {}

    for repeat in range(len(votes) + 1):
        for i, val in enumerate(list(itertools.combinations(''.join(votes_len), repeat))):
            trump_votes = 213  # 川普初始票
            biden_votes = 238  # 拜登初始票
            v = [int(i) for i in val]
            a_vote = [votes[int(i)] for i in v]  # a组合票
            b_vote = [votes[int(i)] for i in votes_len if int(i) not in v]  # b组合票(剔除单字符中的a组合)
            # print(a_vote, b_vote)
            a_sum = sum(a_vote)  # a组合票和
            b_sum = sum(b_vote)  # b组合票和
            trump_votes += a_sum  # 川普最终得票
            biden_votes += b_sum  # 拜登最终得票
            res[trump_votes] = biden_votes  # 双方组合去重
    for t, b in res.items():
        if t > b:
            winner = 'Trump'
        else:
            winner = 'Biden'
        print(f'【{winner}】Win!  Biden: {b} Trump:{t}')

    print(res)


if __name__ == '__main__':
    predict()

  

结果:

【Biden】Win!  Biden: 324 Trump:213
【Biden】Win!  Biden: 321 Trump:216
【Biden】Win!  Biden: 318 Trump:219
【Biden】Win!  Biden: 314 Trump:223
【Biden】Win!  Biden: 309 Trump:228
【Biden】Win!  Biden: 308 Trump:229
【Biden】Win!  Biden: 304 Trump:233
【Biden】Win!  Biden: 315 Trump:222
【Biden】Win!  Biden: 311 Trump:226
【Biden】Win!  Biden: 306 Trump:231
【Biden】Win!  Biden: 305 Trump:232
【Biden】Win!  Biden: 301 Trump:236
【Biden】Win!  Biden: 303 Trump:234
【Biden】Win!  Biden: 302 Trump:235
【Biden】Win!  Biden: 298 Trump:239
【Biden】Win!  Biden: 299 Trump:238
【Biden】Win!  Biden: 294 Trump:243
【Biden】Win!  Biden: 293 Trump:244
【Biden】Win!  Biden: 289 Trump:248
【Biden】Win!  Biden: 292 Trump:245
【Biden】Win!  Biden: 288 Trump:249
【Biden】Win!  Biden: 300 Trump:237
【Biden】Win!  Biden: 295 Trump:242
【Biden】Win!  Biden: 296 Trump:241
【Biden】Win!  Biden: 291 Trump:246
【Biden】Win!  Biden: 290 Trump:247
【Biden】Win!  Biden: 286 Trump:251
【Biden】Win!  Biden: 285 Trump:252
【Biden】Win!  Biden: 287 Trump:250
【Biden】Win!  Biden: 283 Trump:254
【Biden】Win!  Biden: 282 Trump:255
【Biden】Win!  Biden: 279 Trump:258
【Biden】Win!  Biden: 278 Trump:259
【Biden】Win!  Biden: 277 Trump:260
【Biden】Win!  Biden: 273 Trump:264
【Biden】Win!  Biden: 272 Trump:265
【Biden】Win!  Biden: 284 Trump:253
【Biden】Win!  Biden: 280 Trump:257
【Biden】Win!  Biden: 276 Trump:261
【Biden】Win!  Biden: 275 Trump:262
【Biden】Win!  Biden: 274 Trump:263
【Biden】Win!  Biden: 270 Trump:267
【Biden】Win!  Biden: 269 Trump:268
【Biden】Win!  Biden: 271 Trump:266
【Trump】Win!  Biden: 267 Trump:270
【Trump】Win!  Biden: 266 Trump:271
【Trump】Win!  Biden: 263 Trump:274
【Trump】Win!  Biden: 262 Trump:275
【Trump】Win!  Biden: 257 Trump:280
【Trump】Win!  Biden: 268 Trump:269
【Trump】Win!  Biden: 264 Trump:273
【Trump】Win!  Biden: 260 Trump:277
【Trump】Win!  Biden: 259 Trump:278
【Trump】Win!  Biden: 254 Trump:283
【Trump】Win!  Biden: 261 Trump:276
【Trump】Win!  Biden: 256 Trump:281
【Trump】Win!  Biden: 251 Trump:286
【Trump】Win!  Biden: 247 Trump:290
【Trump】Win!  Biden: 258 Trump:279
【Trump】Win!  Biden: 253 Trump:284
【Trump】Win!  Biden: 248 Trump:289
【Trump】Win!  Biden: 244 Trump:293
【Trump】Win!  Biden: 241 Trump:296
【Trump】Win!  Biden: 238 Trump:299
View Code

 

最后:

无论谁当选,反华的政策都不会放松,这已经是漂亮国的国策了,

所以我更希望伤敌一千自损八百的懂王再来四年,"maga" !

 

posted @ 2020-11-05 01:23  暮良文王  阅读(253)  评论(0编辑  收藏  举报