Attention:- Your code should follow all the below instruction.
Specification
The file has entries like the following
Barnstable,Barnstable,1
Bourne,Barnstable,5
Brewster,Barnstable,9
...
This code should create a dictionary where the county is the key and then total number of cases for the country is the value.
The code should print the name of the county with the highest number of cases along with the total cases.
The code must only use below 3 functions
This code must read in a text file with case numbers for all cities in Massachusetts along with their counties.
open_file_read
This function must have the following header
def open_file_read(filename):
It must try to create a file object for reading on the file whose name is given by the parameter filename.
If it is succesfull in creating the file object it should return the object.
If it is cannot create the object it should print an error message and return None.
cases_dictionary_create
This function must have the following header
def cases_dictionary_create(file):
This function reads a file and creates a dictionary where the keys are counties and the values are total cases.
highest_cases
This function must have the following header
def highest_cases(county_cases):
The function
for this assignment
Open an a text editor and create the file hw4.py.
You can use the editor built into IDLE or a program like Sublime.
Test Code
Your hw4.py file must contain the following test code at the bottom of the file
filename = input("File name: ")
file = open_file_read(filename)
if file:
cases = cases_dictionary_create(file)
max_county, max_cases = highest_cases(cases)
print(max_county,max_cases)
For this code to work, you must copy below data to cities_counties_cases.txt file to your machine.
Barnstable,Barnstable,1
Bourne,Barnstable,5
Brewster,Barnstable,9
Chatham,Barnstable,2
Dennis,Barnstable,15
Eastham,Barnstable,2
Falmouth,Barnstable,9
Harwich,Barnstable,12
Mashpee,Barnstable,3
Orleans,Barnstable,7
Provincetown,Barnstable,4
Sandwich,Barnstable,4
Truro,Barnstable,2
Wellfleet,Barnstable,14
Yarmouth,Barnstable,7
Adams,Berkshire,9
Alford,Berkshire,14
Becket,Berkshire,1
Cheshire,Berkshire,11
Clarksburg,Berkshire,0
Dalton,Berkshire,3
Egremont,Berkshire,7
Florida,Berkshire,11
Great Barrington,Berkshire,7
Hancock,Berkshire,10
Hinsdale,Berkshire,8
Lanesborough,Berkshire,3
Lee,Berkshire,10
Lenox,Berkshire,10
Monterey,Berkshire,4
Mount Washington,Berkshire,13
New Ashford,Berkshire,11
New Marlborough,Berkshire,15
North Adams,Berkshire,13
Otis,Berkshire,5
Peru,Berkshire,14
Pittsfield,Berkshire,1
Richmond,Berkshire,15
Sandisfield,Berkshire,9
Savoy,Berkshire,15
Sheffield,Berkshire,3
Stockbridge,Berkshire,12
Tyringham,Berkshire,5
Washington,Berkshire,7
West Stockbridge,Berkshire,11
Williamstown,Berkshire,14
Windsor,Berkshire,11
Acushnet,Bristol,11
Attleboro,Bristol,2
Berkley,Bristol,14
Dartmouth,Bristol,8
Dighton,Bristol,4
Easton,Bristol,0
Fairhaven,Bristol,12
Fall River,Bristol,7
Freetown,Bristol,0
Mansfield,Bristol,12
New Bedford,Bristol,13
North Attleborough,Bristol,6
Norton,Bristol,5
Raynham,Bristol,3
Rehoboth,Bristol,6
Seekonk,Bristol,8
Somerset,Bristol,10
Swansea,Bristol,5
Tauntom,Bristol,8
Westport,Bristol,4
Aquinnah,Dukes,4
Chilmark,Dukes,10
Edgartown,Dukes,9
Gosnold,Dukes,9
Oak Bluffs,Dukes,13
Tisbury,Dukes,5
West Tisbury,Dukes,6
Amesbury,Essex,12
Andover,Essex,5
Beverly,Essex,12
Boxford,Essex,15
Danvers,Essex,12
Essex,Essex,5
Georgetown,Essex,15
Gloucester,Essex,12
Groveland,Essex,1
Hamilton,Essex,7
Haverhill,Essex,8
Ipswich,Essex,5
Lawrence,Essex,12
Lynn,Essex,6
Lynnfield,Essex,10
Manchester by the sea,Essex,4
Marblehead,Essex,4
Merrimac,Essex,12
Methuen,Essex,12
Middleton,Essex,14
Nahant,Essex,12
Newbury,Essex,6
Newburyport,Essex,4
North Andover,Essex,10
Peabody,Essex,6
Rockport,Essex,3
Rowley,Essex,6
Salem,Essex,9
Salisbury,Essex,10
Saugus,Essex,13
Swampscott,Essex,13
Topsfield,Essex,7
Wenham,Essex,10
West Newbury,Essex,8
Ashfield,Franklin,14
Bernardston,Franklin,9
Buckland,Franklin,10
Charlemont,Franklin,5
Colrain,Franklin,2
Conway,Franklin,4
Deerfield,Franklin,15
Erving,Franklin,8
Gill,Franklin,2
Greenfield,Franklin,3
Hawley,Franklin,3
Heath,Franklin,13
Leverett,Franklin,0
Leyden,Franklin,6
Monroe,Franklin,13
Montague,Franklin,13
New Salem,Franklin,3
Northfield,Franklin,4
Orange,Franklin,2
Rowe,Franklin,6
Shelburne,Franklin,3
Shutesbury,Franklin,8
Sunderland,Franklin,13
Warwick,Franklin,6
Wendell,Franklin,11
Whately,Franklin,4
Agawam,Hampden,8
Blandford,Hampden,4
Brimfield,Hampden,14
Chester,Hampden,14
Chicopee,Hampden,2
East Longmeadow,Hampden,15
Granville,Hampden,13
Hampden,Hampden,2
Holland,Hampden,9
Holyoke,Hampden,10
Longmeadow,Hampden,5
Ludlow,Hampden,9
Monson,Hampden,4
Montgomery,Hampden,0
Palmer,Hampden,15
Russell,Hampden,15
Southwick,Hampden,1
Springfield,Hampden,13
Tolland,Hampden,5
Wales,Hampden,11
West Springfield,Hampden,7
Westfield,Hampden,14
Wilbraham,Hampden,9
Amherst,Hampshire,13
Belchertown,Hampshire,6
Chesterfield,Hampshire,0
Cummington,Hampshire,13
Easthampton,Hampshire,15
Goshen,Hampshire,4
Granby,Hampshire,5
Hadley,Hampshire,4
Hatfield,Hampshire,2
Huntington,Hampshire,13
Middlefield,Hampshire,7
Northampton,Hampshire,4
Pelham,Hampshire,7
Plainfield,Hampshire,10
South Hadley,Hampshire,4
Southampton,Hampshire,8
Ware,Hampshire,12
Westhampton,Hampshire,0
Williamsburg,Hampshire,15
Worthington,Hampshire,8
Acton,Middlesex,12
Arlington,Middlesex,12
Ashby,Middlesex,6
Ashland,Middlesex,4
Ayer,Middlesex,5
Bedford,Middlesex,6
Belmont,Middlesex,6
Billerica,Middlesex,6
Boxborough,Middlesex,0
Burlington,Middlesex,9
Cambridge,Middlesex,9
Carlisle,Middlesex,1
Chelmsford,Middlesex,15
Concord,Middlesex,0
Dracut,Middlesex,9
Dunstable,Middlesex,9
Everett,Middlesex,5
Framingham,Middlesex,10
Groton,Middlesex,15
Holliston,Middlesex,11
Hopkinton,Middlesex,6
Hudson,Middlesex,8
Lexington,Middlesex,11
Lincoln,Middlesex,12
Littleton,Middlesex,1
Lowell,Middlesex,7
Malden,Middlesex,2
Marlborough,Middlesex,12
Maynard,Middlesex,1
Medford,Middlesex,2
Melrose,Middlesex,14
Natick,Middlesex,8
Newton,Middlesex,0
North Reading,Middlesex,15
Pepperell,Middlesex,13
Reading,Middlesex,8
Sherborn,Middlesex,8
Shirley,Middlesex,6
Somerville,Middlesex,12
Stoneham,Middlesex,6
Stow,Middlesex,11
Sudbury,Middlesex,7
Tewksbury,Middlesex,0
Townsend,Middlesex,10
Tyngsborough,Middlesex,14
Wakefield,Middlesex,2
Wlatham,Middlesex,0
Watertown,Middlesex,14
Wayland,Middlesex,15
Westford,Middlesex,8
Weston,Middlesex,13
Wilmington,Middlesex,5
Winchester,Middlesex,12
Woburn,Middlesex,14
Nantucket,Nantucket,12
Avon,Norfolk,12
Bellingham,Norfolk,6
Braintree,Norfolk,3
Brookline,Norfolk,0
Canton,Norfolk,12
Cohasset,Norfolk,7
Dedham*,Norfolk,2
Dover,Norfolk,4
Foxborough,Norfolk,0
Franklin,Norfolk,10
Holbrook,Norfolk,1
Medfield,Norfolk,13
Medway,Norfolk,12
Millis,Norfolk,14
Milton,Norfolk,15
Needham,Norfolk,9
Norfolk,Norfolk,14
Norwood,Norfolk,14
Plainville,Norfolk,3
Quincy,Norfolk,4
Randolph,Norfolk,10
Sharon,Norfolk,15
Stoughton,Norfolk,6
Walpole,Norfolk,5
Wellesley,Norfolk,13
Westwood,Norfolk,10
Weymouth,Norfolk,2
Wrentham,Norfolk,9
Abington,Plymouth,4
Bridgewater,Plymouth,2
Brockton,Plymouth,5
Carver,Plymouth,12
Duxbury,Plymouth,7
East Bridgewater,Plymouth,3
Halifax,Plymouth,11
Hanover,Plymouth,12
Hanson,Plymouth,11
Hingham,Plymouth,12
Hull,Plymouth,3
Kingston,Plymouth,5
Lakeville,Plymouth,10
Marion,Plymouth,14
Marshfield,Plymouth,4
Mattapoisett,Plymouth,2
Middleborough,Plymouth,2
Norwell,Plymouth,10
Pembroke,Plymouth,5
Plymouth*,Plymouth,2
Plympton,Plymouth,8
Rochester,Plymouth,3
Rockland,Plymouth,2
Scituate,Plymouth,10
Wareham,Plymouth,0
West Bridgewater,Plymouth,3
Whitman,Plymouth,10
Boston,Suffolk,14
Chelsea,Suffolk,2
Revere,Suffolk,11
Winthrop,Suffolk,13
Ashburnham,Worcester,4
Athol,Worcester,4
Auburn,Worcester,11
Barre,Worcester,12
Berlin,Worcester,11
Blackstone,Worcester,9
Bolton,Worcester,4
Boylston,Worcester,1
Brookfield,Worcester,1
Charlton,Worcester,0
Clinton,Worcester,4
Douglas,Worcester,0
Dudley,Worcester,11
East Brookfield,Worcester,3
Fitchburg,Worcester,7
Gardner,Worcester,6
Grafton,Worcester,5
Hardwick,Worcester,11
Harvard,Worcester,15
Holden,Worcester,13
Hopedale,Worcester,15
Hubbardston,Worcester,9
Lancaster,Worcester,11
Leicester,Worcester,3
Leominster,Worcester,15
Lunenburg,Worcester,13
Mendon,Worcester,10
Milford,Worcester,11
Millbury,Worcester,3
Millville,Worcester,7
New Braintree,Worcester,10
North Brookfield,Worcester,6
Northborough,Worcester,2
Northbridge,Worcester,8
Oakham,Worcester,6
Oxford,Worcester,14
Paxton,Worcester,15
Petersham,Worcester,2
Phillipston,Worcester,15
Princeton,Worcester,1
Royalston,Worcester,15
Rutland,Worcester,8
Shrewsbury,Worcester,1
Southborough,Worcester,7
Southbridge,Worcester,1
Spencer,Worcester,10
Sterling,Worcester,5
Sturbridge,Worcester,15
Sutton,Worcester,12
Templeton,Worcester,3
Upton,Worcester,13
Uxbridge,Worcester,12
Warren,Worcester,5
Webster,Worcester,7
West Boylston,Worcester,2
West Brookfield,Worcester,3
Westborough,Worcester,2
Westminster,Worcester,12
Winchendon,Worcester,10
Worcester,Worcester,4
Txt file data end here
Run the code entering cities_counties_cases.txt when prompted.
You should see
$ ./hw4.py
After compile the code you should get the below result
File name: cities_counties_cases.txt
Worcester 455
'''
Python version : 3.6
Python program to determine the county with the highest number of
cases
where data is read from the file
'''
def open_file_read(filename):
'''
It must try to create a file object for reading on the
file
whose name is given by the parameter filename.
If it is succesfull in creating the file object it
should return the object.
If it is cannot create the object it should print an
error message and return None.
'''
try:
file = open(filename) # open the
file
return file # file opened
succesfully
except IOError:
# file opening failed
print('Unable to open file: %s'
%filename)
return None
def cases_dictionary_create(file):
'''
This function reads a file and creates a
dictionary
where the keys are counties and the values are total
cases.
The function returns this
dictionary.
'''
# create an empty dictionary
county_cases = {}
# read a line from file
line = file.readline()
# loop to read the file till the end, line by
line
while line:
# strip removes the leading and
trailing spaces from line
# split is used to split the string
using comma(,) as the delimiter into a list of strings
data =
line.strip().split(',')
# check if county is present in
dictionary
if data[1] in county_cases:
# int is used to
convert string to integer
county_cases[data[1]] += int(data[2]) # add the number of cases of
this record to dictionary
else: # county is not
present in dictionary
# create a new
record in dictionary where county is the key and number of cases
for this record as value
county_cases[data[1]] = int(data[2])
line = file.readline() # read the
next line from file
return county_cases
def highest_cases(county_cases):
'''
This function returns the county name and number of
cases
of the county with highest number of cases
'''
# initialize max_county to None and max_cases to
0
max_county = None
max_cases = 0
# loop over the keys in the dictionary
for county in county_cases:
# if max_county is not set or
number of cases for county > max_cases
if max_county == None or
county_cases[county] > max_cases:
# update
max_county to county and max_cases to number of cases for this
county
max_county =
county
max_cases =
county_cases[county]
return max_county, max_cases
# input the filename
filename = input("File name: ")
file = open_file_read(filename) # open the file
if file: # file open succesfull
cases = cases_dictionary_create(file) # get the
dictionary of county and cases
max_county, max_cases = highest_cases(cases) # get the
county with maximum number of cases
print(max_county,max_cases) # display the result
#end of program
Code Screenshot:
Output:
Input file: (using the above file)
Output:
Get Answers For Free
Most questions answered within 1 hours.