2015-04-28 140 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'