Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write the function readable-interval that takes a string consisting of a human-r

ID: 3812400 • Letter: W

Question

Write the function readable-interval that takes a string consisting of a human-readable time interval Homework #3 CSE 101 Spring 2017 Page 3 and converts it into a list of six integers, given in this order: of years, of months, t of days, #of hours, of minutes, of seconds] The input values stored within the string can be quite scrambled and consist of multiple, repeated time components (days, months, etc.), as shown in the examples below. If a time component appears more than once, the values are be added. The time units might be given in singular or plural form (e.g., "month" and "months" are both valid). There will always be at least (but not necessarily exactly) one space between the tokens (i.e., components) of the string. Examples: Function Call: readable-interval 1 year 2 months 3 seconds') Return Value: 1, 2, 0, 0, 0, 31 Function Call: readable-interval 1 second 2 years 3 seconds 7 months 6 days' Return Value: [2, 7, 6, 0, 0, 4 Function Call 4 hours 17 minutes') readable interval 1 days 4 days 3 years Return Value: 13, 0, 5, 4, 17, 01 Function Call readable interval 6 hours 20 minutes 421 seconds Return Value: [0, 0, 0, 6, 20 421] Function Call readable interval 0 days 0 months 7 months 18 years') Return Value: 18 7, 0, 0, 0, 01

Explanation / Answer

def readable_interval(interval):
value = interval.split(' ')
print(value)
intervals = [0, 0, 0, 0, 0, 0]
for i in range(len(value)):
if value[i] == 'years' or value[i] == 'year':
intervals[0] += int(value[i-1])
elif value[i] == 'month' or value[i] == 'months':
intervals[1] += int(value[i-1])
elif value[i] == 'day' or value[i] == 'days':
intervals[2] += int(value[i-1])
elif value[i] == 'hour' or value[i] == 'hours':
intervals[3] += int(value[i-1])
elif value[i] == 'minute' or value[i] == 'minutes':
intervals[4] += int(value[i-1])
elif value[i] == 'second' or value[i] == 'seconds':
intervals[5] += int(value[i-1])
return intervals

Just delete the i%2 = 0 condition in the for loop to allow both even and odd number of spaces checking in the string. But remember within every pair of data give only a single space(i.e 1 month) and between two pairs you can give any no of spaces and it works if you remove that condition as explained above