A rainfall sensor monitors the average rainfall over a year. It records the total once each day per week and all 52 weeks in a year. The program will then
- Display the total rainfall for each week
- Display the total for the year
- The smallest and largest amount of rainfall in a single week.
The following program reads data from a CSV file and then populates the array one row at a time. So far, the program can calculate the total rainfall for the year by traversing each row of the array at a time and incrementing a total. I am not sure how to find the total rainfall from each week with the smallest and largest amount of rainfall that week.
CODE
import random
#global variables
rows = 52
cols = 7
def initArray():
newArray = [[None]*cols for i in range(rows)]
return newArray
def populateArray(arrayname,filename):
rowcounter = 0
colcounter = 0
with open(filename) as readfile:
line = readfile.readline().rstrip('\n')
while line:
#read the line of a file
items = line.split(",")
print("Items = ", items)
#reset the colcounter to ensure first item is placed
#at first position in the 2D array
colcounter = 0
#for the length of the array
for x in range(len(items)):
#place the new values into the array a row at a time
arrayname[rowcounter][colcounter] = int(items[colcounter])
#increment the column counter
colcounter += 1
#increment the row counter
rowcounter += 1
line = readfile.readline().rstrip('\n')
return arrayname
def yearly(arrayname):
total = 0
for x in range(len(arrayname)):
for y in range(len(arrayname[x])):
total += arrayname[x][y]
return total
rainfall = initArray()
rainfall = populateArray(rainfall,"rainfall.csv")
total = yearly(rainfall)
print("The total rainfall for the year was",str(total))
output:
Items = ['2', '16', '10', '2', '12', '9', '9']
Items = ['2', '29', '17', '16', '13', '18', '7']
Items = ['22', '15', '27', '19', '6', '26', '11']
Items = ['21', '7', '18', '4', '14', '14', '2']
Items = ['6', '30', '12', '4', '26', '22', '11']
Items = ['21', '16', '14', '11', '28', '20', '3']
Items = ['19', '10', '22', '18', '30', '9', '27']
Items = ['8', '15', '17', '4', '11', '16', '6']
Items = ['19', '17', '16', '6', '18', '18', '6']
Items = ['2', '15', '3', '25', '27', '16', '11']
Items = ['15', '5', '26', '24', '24', '30', '5']
Items = ['15', '11', '16', '22', '14', '23', '28']
Items = ['25', '6', '7', '20', '26', '18', '16']
Items = ['5', '5', '21', '22', '24', '16', '5']
Items = ['6', '27', '11', '8', '24', '1', '16']
Items = ['28', '4', '1', '4', '3', '19', '24']
Items = ['19', '3', '27', '14', '12', '24', '0']
Items = ['6', '3', '26', '15', '15', '22', '26']
Items = ['18', '5', '0', '14', '15', '7', '26']
Items = ['10', '5', '12', '22', '8', '7', '11']
Items = ['11', '1', '18', '29', '6', '9', '26']
Items = ['3', '23', '2', '21', '29', '15', '25']
Items = ['5', '7', '1', '6', '15', '18', '24']
Items = ['28', '11', '0', '6', '28', '11', '26']
Items = ['4', '28', '9', '24', '11', '13', '2']
Items = ['6', '2', '14', '18', '20', '21', '1']
Items = ['20', '29', '22', '21', '11', '14', '20']
Items = ['28', '23', '14', '17', '25', '3', '18']
Items = ['6', '27', '6', '20', '19', '5', '24']
Items = ['25', '3', '27', '22', '7', '12', '21']
Items = ['12', '22', '8', '7', '0', '11', '8']
Items = ['8', '25', '1', '6', '21', '23', '0']
The total rainfall for the year was 5344
CSV Data
0,0,30,2,21,13,23
29,3,29,30,7,8,25
26,5,26,13,4,13,4
22,30,13,15,15,0,2
3,12,11,10,17,0,15
8,13,11,24,30,24,27
22,18,2,29,11,13,18
15,1,29,23,18,7,0
23,27,3,7,13,14,28
6,25,24,14,20,23,5
24,29,26,22,0,9,18
22,27,22,20,24,29,21
23,13,14,4,13,1,21
25,21,21,6,28,17,19
4,6,11,10,21,1,5
11,7,22,11,10,24,15
25,11,23,3,23,8,3
22,23,0,29,15,12,5
21,11,18,22,1,4,3
11,10,3,1,30,14,22
2,16,10,2,12,9,9
2,29,17,16,13,18,7
22,15,27,19,6,26,11
21,7,18,4,14,14,2
6,30,12,4,26,22,11
21,16,14,11,28,20,3
19,10,22,18,30,9,27
8,15,17,4,11,16,6
19,17,16,6,18,18,6
2,15,3,25,27,16,11
15,5,26,24,24,30,5
15,11,16,22,14,23,28
25,6,7,20,26,18,16
5,5,21,22,24,16,5
6,27,11,8,24,1,16
28,4,1,4,3,19,24
19,3,27,14,12,24,0
6,3,26,15,15,22,26
18,5,0,14,15,7,26
10,5,12,22,8,7,11
11,1,18,29,6,9,26
3,23,2,21,29,15,25
5,7,1,6,15,18,24
28,11,0,6,28,11,26
4,28,9,24,11,13,2
6,2,14,18,20,21,1
20,29,22,21,11,14,20
28,23,14,17,25,3,18
6,27,6,20,19,5,24
25,3,27,22,7,12,21
12,22,8,7,0,11,8
8,25,1,6,21,23,0
min()andmax()on that listnumpyorpandas.