-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPyPoll.py
More file actions
153 lines (124 loc) · 5.41 KB
/
Copy pathPyPoll.py
File metadata and controls
153 lines (124 loc) · 5.41 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#The data we need to retrieve.
#Assign a variable for the file to load and the path.
#file_to_load = 'Resources/election_results.csv'
# Open the election results and read the file.
# election_data = open(file_to_load, 'r')
# To do: perform analysis.
# # Close the file.
# election_data.close()
# Open the election results and read the file directly
# with open(file_to_load) as election_data:
# #to do : perform analysis
# print(election_data)
# Add our dependencies.
import csv
import os
# Assign a variable for the file to load and the path.
file_to_load = os.path.join("Resources", "election_results.csv")
# Assign a variable to save the file to a path.
file_to_save = os.path.join("analysis", "election_analysis.txt")
#1.The total number of votes cast, initialising the counter
total_votes = 0
#candidate options
candidate_options = []
# 1. Declare the empty dictionary. Candidates votes
candidate_votes = {}
candidate_results = ""
# Winning Candidate and Winning Count Tracker
winning_candidate = ""
winning_count = 0
winning_percentage = 0
# Open the election results and read the file.
with open(file_to_load) as election_data:
# To do: read and analyze the data here.
# Read the file object with the reader function.
file_reader = csv.reader(election_data)
# Print the header row.
headers = next(file_reader)
#print(headers)
# Print each row in the CSV file.
for row in file_reader:
# 2. Add to the total vote count.
total_votes += 1
# Print the candidate name from each row
candidate_name = row[2]
# If the candidate does not match any existing candidate...
if candidate_name not in candidate_options:
# Add it to the list of candidates.
candidate_options.append(candidate_name)
# # Add the candidate name to the candidate list.
# candidate_options.append(candidate_name)
# 2. Begin tracking that candidate's vote count.
candidate_votes[candidate_name] = 0
# Add a vote to that candidate's count.
candidate_votes[candidate_name] += 1
# Save the results to our text file.
with open(file_to_save,"w") as txt_file:
# After opening the file Print the final vote count to the terminal.
election_results = (
f"\nElection Results\n"
f"-------------------------\n"
f"Total Votes: {total_votes:,}\n"
f"-------------------------\n")
print(election_results, end="")
# Save the final vote count to the text file.
txt_file.write(election_results)
# Determine the percentage of votes for each candidate by looping through the counts.
# 1. Iterate through the candidate list.
for candidate_name in candidate_votes:
# 2. Retrieve vote count of a candidate.
votes = candidate_votes[candidate_name]
# 3. Calculate the percentage of votes.
vote_percentage = float(votes) / float(total_votes) * 100
# 4. Print the candidate name and percentage of votes.
candidate_results = (f"{candidate_name}: received {vote_percentage:.1f}% of the vote.\n")
# Print each candidate, their voter count, and percentage to the terminal.
print(candidate_results)
# Save the candidate results to our text file.
txt_file.write(candidate_results)
# Determine winning vote count and candidate
# 1. Determine if the votes are greater than the winning count.
if (votes > winning_count) and (vote_percentage > winning_percentage):
# 2. If true then set winning_count = votes and winning_percent =
# vote_percentage.
winning_count = votes
winning_percentage = vote_percentage
# 3. Set the winning_candidate equal to the candidate's name.
winning_candidate = candidate_name
# 3. Print the total votes.
#print(total_votes)
# Print the candidate list.
#print(candidate_options)
# Print the candidate vote dictionary.
#print(candidate_votes)
# To do: print out the winning candidate, vote count and percentage to
# terminal.
winning_candidate_summary = (
f"-------------------------\n"
f"Winner: {winning_candidate}\n"
f"Winning Vote Count: {winning_count:,}\n"
f"Winning Percentage: {winning_percentage:.1f}%\n"
f"-------------------------\n")
print(winning_candidate_summary)
# Save the winning candidate's results to the text file.
txt_file.write(winning_candidate_summary)
# Create a filename variable to a direct or indirect path to the file.
#file_to_save = os.path.join("Analysis", "election_analysis.txt")
# Using the open() function with the "w" mode we will write data to the file.
#open(file_to_save, "w")
# Use the open statement to open the file as a text file.
# outfile = open(file_to_save, "w")
# # Write some data to the file.
# outfile.write("Hello World!")
# # Close the file
# outfile.close()
# Using the with statement open the file as a text file.
# with open(file_to_save, "w") as txt_file:
# # Write some data to the file.
# txt_file.write("Counties in the Election")
# txt_file.write("\n------------------------------\n")
# txt_file.write("Arapohoe\nDenver\nJefferson ")
#2.A complete list of candidates who received votes
#3.The percentage of votes each candidate won
#4.The total number of votes each candidate won
#5.The winner of the election based on popular vote.