Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Having this error: The call daytime ( datetime . datetime ( 2 0 1 5 , 1 0 , 3 1 , 6 , 0

Having this error:
The call daytime(datetime.datetime(2015,10,31,6,0, tzinfo=),daycycle) returns False, not True.
def daytime(time,daycycle):
"""
Returns True if the time takes place during the day, False otherwise (and
returns None if a key does not exist in the dictionary).
A time is during the day if it is after sunrise but before sunset, as
indicated by the daycycle dictionary.
A daycycle dictionary has keys for several years (as strings). The value for
each year is also a dictionary, taking strings of the form 'mm-dd'. The
value for that key is a THIRD dictionary, with two keys "sunrise" and
"sunset". The value for each of those two keys is a string in 24-hour
time format.
For example, here is what part of a daycycle dictionary might look like:
"2015": {
"01-01": {
"sunrise": "07:35",
"sunset": "16:44"
},
"01-02": {
"sunrise": "07:36",
"sunset": "16:45"
},
...
}
In addition, the daycycle dictionary has a key 'timezone' that expresses the
timezone as a string. This function uses that timezone when constructing
datetime objects using data from the daycycle dictionary. Also, if the time
parameter does not have a timezone, we assume that it is in the same timezone
as the daycycle dictionary.
Parameter time: The time to check
Precondition: time is a datetime object
Parameter daycycle: The daycycle dictionary
Precondition: daycycle is a valid daycycle dictionary, as described above
"""
# HINT: Use the code from the previous exercise to get sunset AND sunrise
# Add a timezone to time if one is missing (the one from the daycycle)
year = time.year
month_day = time.strftime('%m-%d')
day_info = daycycle[str(year)][month_day]
sunrise_str = day_info['sunrise']
sunset_str = day_info['sunset']
if time.tzinfo is None:
tz = pytz.timezone(daycycle['timezone'])
time = tz.localize(time)
else:
tz = time.tzinfo
sunrise = datetime.datetime.combine(time.date(), datetime.datetime.strptime(sunrise_str,'%H:%M').time(), tzinfo=tz)
sunset = datetime.datetime.combine(time.date(), datetime.datetime.strptime(sunset_str,'%H:%M').time(), tzinfo=tz)
return sunrise <= time < sunset

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Samsung Galaxy S23 Ultra Comprehensive User Manual

Authors: Leo Scott

1st Edition

B0BVPBJK5Q, 979-8377286455

More Books

Students also viewed these Databases questions