-
Notifications
You must be signed in to change notification settings - Fork 0
/
Mainpy_poll.py
81 lines (64 loc) · 2.33 KB
/
Mainpy_poll.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import os
import csv
print(os.path.dirname(__file__))
os.chdir(os.path.dirname(__file__))
csvpath = os.path.join("Resources", "election_data.csv")
#pathout = os.path.join("Resources", "poll_analysis.txt")
#initialize variables
candidates = []
num_votes = 0
vote_counts = []
#open the file
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile)
#skip the header
line = next(csvreader,None)
#go line by line and process each vote
for line in csvreader:
#add to total number of votes
num_votes = num_votes + 1
#candidate voted for
candidate = line[2]
#if candidate has other votes then add to vote tally
if candidate in candidates:
candidate_index = candidates.index(candidate)
vote_counts[candidate_index] = vote_counts[candidate_index] + 1
#else create new spot in list for candidate
else:
candidates.append(candidate)
vote_counts.append(1)
percentages = []
max_votes = vote_counts[0]
max_index = 0
#percentage of vote for each candidate and the winner
for count in range(len(candidates)):
vote_percentage = vote_counts[count]/num_votes*100
percentages.append(vote_percentage)
if vote_counts[count] > max_votes:
max_votes = vote_counts[count]
print(max_votes)
max_index = count
winner = candidates[max_index]
#print results
print("Election Results")
print("--------------------------")
print(f"Total Votes: {num_votes}")
for count in range(len(candidates)):
print(f"{candidates[count]}: {percentages[count]}% ({vote_counts[count]})")
print("---------------------------")
print(f"Winner: {winner}")
print("---------------------------")
write_file = f"pypoll_results_summary.txt"
#open write file
filewriter = open(write_file, mode = 'w')
#print analysis to file
filewriter.write("Election Results\n")
filewriter.write("--------------------------\n")
filewriter.write(f"Total Votes: {num_votes}\n")
for count in range(len(candidates)):
filewriter.write(f"{candidates[count]}: {percentages[count]}% ({vote_counts[count]})\n")
filewriter.write("---------------------------\n")
filewriter.write(f"Winner: {winner}\n")
filewriter.write("---------------------------\n")
#close file
filewriter.close()