投票计数python

题目描述:入候选人的人数,第二行输入候选人的名字,第三行输入投票人的人数,第四行输入投票。
输出描述:
每行输出候选人的名字和得票数量。
例如:
输入

4
A B C D
8
A B C D E F G H

输出

A : 1
B : 1
C : 1
D : 1
Invalid : 4

先做一个字典,放可以投票的人,然后遍历投票,如果有效就字典中的数+1,无效给count加一,最后输出字典里的内容,和无效的。
这里的坑是最后要按顺序输出。dict是乱序的,所以循环使用了输入的name,
注意括号和空格。

while True:
    try:
        num = int(input())
        name = input().split()
        t_num = int(input())
        tou = input().split()

        dict1 = {
     }
        count = 0
        for i in name:
            dict1[i] = 0
        count = 0
        for j in tou:
            if j  in dict1:
                dict1[j] += 1
                
            else:
                count += 1
        for k in name:
            print("%s : %s" % (k, dict1[k]))
        print("Invalid : " + str(count))
    except:
        break

另一种方法,使用count()计数:

while True:
    try:
        num = int(input())
        name = input().split()
        t_num = int(input())
        tou = input().split()
        youxiao = 0
        for i in name:
            if i in tou:
                print(i +" : "+ str(tou.count(i)))
                youxiao += tou.count(i)
            else:
                print(i + " : " + str(tou.count(i)))
        print('Invalid : ' + str(t_num - youxiao))
    except:
        break

你可能感兴趣的:(牛客网刷题)