Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
klaudio07 authored Jul 13, 2020
1 parent 7973084 commit 9689ab8
Show file tree
Hide file tree
Showing 3 changed files with 369,888 additions and 0 deletions.
155 changes: 155 additions & 0 deletions PyPoll_Challenge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
# -*- coding: UTF-8 -*-
"""PyPoll Homework Challenge starter code."""

# Add our dependencies.
import csv
import os

# Add a variable to load a file from a path.
file_to_load = os.path.join("Resources/election_results.csv")

# Add a variable to save the file to a path.
file_to_save = os.path.join("analysis", "election_analysis.txt")

# Initialize a total vote counter.
total_votes = 0

# Candidate Options and candidate votes.
candidate_options = []
candidate_votes = {}

# 1: Create a county list and county votes dictionary.
county_options = []
county_votes = {}

# Track the winning candidate, vote count and percentage
winning_candidate = ""
winning_count = 0
winning_percentage = 0

# 2: Track the largest county and county voter turnout.
winning_county = ""
winning_county_count = 0
winning_county_percentage = 0

# Read the csv and convert it into a list of dictionaries
with open(file_to_load) as election_data:
reader = csv.reader(election_data)

# Read the header
header = next(reader)

# For each row in the CSV file.
for row in reader:

# Add to the total vote count
total_votes = total_votes + 1

# Get the candidate name from each row.
candidate_name = row[2]

# 3: Extract the county name from each row.
county_name = row[1]

# If the candidate does not match any existing candidate add it to the candidate list
if candidate_name not in candidate_options:

# Add the candidate name to the candidate list.
candidate_options.append(candidate_name)

# And begin tracking that candidate's voter count.
candidate_votes[candidate_name] = 0

# Add a vote to that candidate's count
candidate_votes[candidate_name] += 1

# 4a: Write a decision statement that checks that the county does not match any existing county in the county list.
if county_name not in county_options:

# 4b: Add the existing county to the list of counties.
county_options.append(county_name)

# 4c: Begin tracking the county's vote count.
county_votes[county_name] = 0

# 5: Add a vote to that county's vote count.
county_votes[county_name] += 1

# Save the results to our text file.
with open(file_to_save, "w") as txt_file:

# Print the final vote count (to terminal)
election_results = (
f"\nElection Results\n"
f"-------------------------\n"
f"Total Votes: {total_votes:,}\n"
f"-------------------------\n\n"
f"County Votes:\n")
print(election_results, end="")

txt_file.write(election_results)

# 6a: Write a repetition statement to get the county from the county dictionary.
for county_name in county_votes:

# 6b: Initialize a variable to hold the county’s votes as they are retrieved from the county votes dictionary.
county_total_votes = county_votes.get(county_name)

# 6c: Calculate the percent of total votes for the county.
county_vote_percentage = float(county_total_votes) / float(total_votes) * 100

# 6d: Print the county results to the terminal.
county_results = (
f"{county_name}: {county_vote_percentage:.1f}% ({county_total_votes:,})\n")
print(county_results)

# 6e: Save the county votes to a text file.
txt_file.write(county_results)

# 6f: Write a decision statement to determine the winning county and get its vote count.
if (county_total_votes > winning_county_count) and (county_vote_percentage > winning_county_percentage):
winning_county_count = county_total_votes
winning_county = county_name
winning_county_percentage = county_vote_percentage

# 7: Print the county with the largest turnout to the terminal.
winning_county_summary = (
f"-------------------------\n"
f"Largest County Turnout: {winning_county}\n"
f"-------------------------\n")
print(winning_county_summary)

# 8: Save the county with the largest turnout to a text file.
txt_file.write(winning_county_summary)

# Save the final candidate vote count to the text file.
for candidate_name in candidate_votes:

# Retrieve vote count and percentage
votes = candidate_votes.get(candidate_name)
vote_percentage = float(votes) / float(total_votes) * 100
candidate_results = (
f"{candidate_name}: {vote_percentage:.1f}% ({votes:,})\n")

# Print each candidate's 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, winning percentage, and candidate.
if (votes > winning_count) and (vote_percentage > winning_percentage):
winning_count = votes
winning_candidate = candidate_name
winning_percentage = vote_percentage

# Print the winning candidate (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 name to the text file
txt_file.write(winning_candidate_summary)
Loading

0 comments on commit 9689ab8

Please sign in to comment.