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

如何为列表中的已有整数增加值?投票计数程序实现咨询

如何完成投票程序并实现列表对应位置数值递增?

嘿,我来帮你搞定这个投票程序!你核心的疑问是怎么给列表对应位置的数值加1,其实很简单,咱们一步步来完善代码:

首先先看你给出的初始代码框架:

list1=[0,0,0,0,0] 
check=True 
while check: 
    num=int(input("Which candidate are you voting for?: ")) 
    if num==1: 
    elif num==2: 
    elif num==3: 
    elif num==4: 
    elif num==5: 
    elif num==-1: 
        check=False 
    for i in range(5): 
        print(i+1) 
    else: 
        print("out of bounds") 

核心问题解决:给列表对应位置增加值

因为你的list1索引是0到4,刚好对应1到5号候选人,所以当用户输入候选人编号num时,只需要执行 list1[num - 1] += 1 就可以实现对应位置的数值加1。举个例子:

  • 输入2 → 对应索引1 → list1[1] +=1 → 列表变成[0,1,0,0,0]
  • 再次输入2 → list1[1]从1变成2 → 列表变成[0,2,0,0,0]

完整的投票程序实现

我把代码补全,还加入了投票结果展示和获胜候选人判定的功能,处理了平局的情况:

# 初始化5个候选人的得票,索引0-4对应1-5号候选人
list1 = [0, 0, 0, 0, 0]
check = True

while check:
    num = int(input("Which candidate are you voting for?: "))
    if num == -1:
        # 输入-1时终止投票循环
        check = False
    elif 1 <= num <= 5:
        # 有效投票:对应候选人得票+1
        list1[num - 1] += 1
    else:
        # 输入无效编号时提示
        print("out of bounds")

# 打印最终投票结果
print("\n=== 投票结果 ===")
for candidate_idx in range(5):
    candidate_num = candidate_idx + 1
    print(f"候选人{candidate_num}:{list1[candidate_idx]}票")

# 找出获胜候选人(处理平局情况)
max_votes = max(list1)
# 收集所有得票等于最高票数的候选人编号
winning_candidates = [i+1 for i, votes in enumerate(list1) if votes == max_votes]

print("\n=== 获胜结果 ===")
if len(winning_candidates) == 1:
    print(f"获胜者是候选人{winning_candidates[0]},共得{max_votes}票!")
else:
    print("出现平局,以下候选人得票相同:")
    for candidate in winning_candidates:
        print(f"- 候选人{candidate},得{max_votes}票")

关键细节说明

  • 简化条件判断:不用写5个elif分别判断1-5,直接用1 <= num <=5覆盖所有有效投票,让代码更简洁易维护。
  • 获胜者判定:用max(list1)快速获取最高得票数,再通过列表推导式筛选出所有得票等于最大值的候选人,兼顾了单人获胜和平局的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:15