2015-04-28 107 views
-2

简单的程序,统计四候选人的选举投票。 投票一次到达一个,其中投票四位候选人用数字表示, 最后在屏幕上打印出胜者。投票不算

有我的代码

candList = [0, 0, 0, 0] 

while True: 
    print '1 for First Candidate' 
    print '2 for Second Candidate' 
    print '3 for Third Candidate' 
    print '4 for Fourth Candidate' 
    print '5 for Exit Poll' 

    cid = input('Enter Candidate Number to Vote: ') 

    if cid == 5: 
     break 

    candList[cid - 1] 

vote = max(candList) 
candidate = candList.index(vote) + 1 
print 'Winner is Candidate', candidate, 'with', vote, 'Votes' 

但问题投票不算.. 我给1名候选人3票,但最后打印

Result is : Winner is Candidate 1 with 0 Votes 
+0

'的eval(的raw_input())'?你是认真的吗? – Shashank

+0

你期待'list [id - 1]'做什么,准确?!你是不是指'list [id] - = 1'?而**不要打电话给你自己的名单'列表**。 – jonrsharpe

+0

使用'input'而不是'raw_input',并且没有'eval' – Morb

回答

3

您从不为list[cid - 1]赋值。你应该改变线划分成以下:

list[cid - 1] += 1 

另外,我建议你不要使用list的名称列表。

4

有在你的代码的问题数。

首先,id是一个内建函数,不要使用id作为变量名。 list同样如此,其次,第15行(list[id-1])显然没有任何作用。第三,您不应使用eval将字符串转换为整数,而应使用int

这段代码应该做的工作,但它仍然有一些注意事项:用户可以输入15或不是一个数字,程序将被终止,也不处理两个候选人获得相同数量的选票时的情况

lst = [0, 0, 0, 0] 

while True: 
    print '1 for First Candidate' 
    print '2 for Second Candidate' 
    print '3 for Third Candidate' 
    print '4 for Fourth Candidate' 
    print '5 for Exit Poll' 

    cid = int(input('Enter Candidate Number to Vote: ')) 

    if cid == 5: 
     break 

    lst[cid - 1] += 1 

vote = max(lst) 
candidate = lst.index(vote) + 1 
print 'Winner is Candidate', candidate, 'with', vote, 'Votes' 
+0

“id”和“list”仅仅是Python中的名字,并不以任何方式保留,如果您认为合适,使用这些名称是完全合法的。把这个作为问题清单中的第一项是误导性的。它们只是美学问题。 – skyking

+0

@skyking我不同意你的看法。从我的角度来看,隐藏'list'和其他内置函数是造成混淆的一个原因,也是一个主要问题。 – Alik

+0

人们总是会对美化的问题持不同意见,要确定谁是对的,谁是错的根本没有困难的方法。代码中的其他问题是引发异常的代码,并且不会实现目标。 – skyking

0

检查这是你在不改变各自的人员数更改代码

list = [0, 0, 0, 0] 

while True: 
    print '1 for First Candidate' 
    print '2 for Second Candidate' 
    print '3 for Third Candidate' 
    print '4 for Fourth Candidate' 
    print '5 for Exit Poll' 

    id = int(raw_input('Enter Candidate Number to Vote: ')) 

    if id == 5: 
     break 
#Change Here add the count 
    list[id - 1] = list[id-1]+1 

vote = max(list) 
candidate = list.index(vote) + 1 
print 'Winner is Candidate', candidate, 'with', vote, 'Votes'