#Add our dependancies.
import csv
import os
#Assign a variable to load a file from a 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.")
#Initialize a total vote counter
total_votes=0
#Candidate options and candidate votes
candidate_options=[]
candidate_votes={}
#Track the winning candidate, vote count, and percentage 
winning_candidate= ""
winning_count=0
winning_percentage=0
#Open the election results and read the file
with open(file_to_load) as election_data:
    file_reader=csv.reader(election_data)
    #Read the header row
    headers= next(file_reader)
    #Print each row in the CSV file
    for row in file_reader:
        #Add to the total vote count
        total_votes += 1
        #Get the candidate's name from each row
        candidate_name= row[2]
        #If the candidate does not match any exisxting candidate add the candidate to the list
        if candidate_name not in candidate_options:
            #Add it to the list of candidates
            candidate_options.append(candidate_name)
            #Begin tracking that candidates vote count
            candidate_votes[candidate_name]=0 
        #Add a vote to that candidate's count
        candidate_votes[candidate_name]+= 1
#Save the results to out text file
with open(file_to_save, "w") as txt_file:
#Print the final vote count to the termial
    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)
    for candidate in candidate_votes:
        #Retrieve vote count and percentage
        votes= candidate_votes[candidate]
        vote_percentage=float(votes)/float(total_votes)*100
        candidate_results=(f"{candidate}: {vote_percentage:.1f}% ({votes:,})\n")
        
        #Print out each candidates name, vote count, and percent of votes to the terminal
        print(candidate_results)
        #Save the candidate results to out text file
        txt_file.write(candidate_results)
        #Determine winning vote count, winning percentage, and winning candidate
        if (votes>winning_count) and (vote_percentage>winning_percentage):
            winning_count=votes
            winning_percentage=vote_percentage
    #Print the winning candidate's results in 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)
    




        


