The problem require to convert user's input to time and print meal time (i.e lunch time, dinner time e.t.c)
When I test my code with the time provided in the problem I get the expected output.
Sadly, when I run check it fails.
Here is my code
def main():
# ask user for input
time_input = input("Time: ").strip().split(":")
# convert time to decimal
time = convert(time_input)
# check time and print meal time
if time >= 7.0 and time <= 8.0:
print("breakfast time")
elif time >= 12.0 and time <= 13.0:
print("lunch time")
elif time >= 18.0 and time <= 19.0:
print("dinner time")
def convert(t):
# convert string to float(hour)
hour = float(t[0])
# convert string to float(minute)
minute = float(t[1]) / 60
return hour + minute
if __name__ == "__main__":
main()
Below is the error I get after running check.
I don't know why I am getting this results from check
I would structure program and divide the problem into following testable functions:
18:15
) as string18.25
for 18:15
)# 1. Example: return a valid ISO-time in format HH:MM or show error and ask again
def ask_for_time():
# your code using input, a prompt and maybe validation
return '18:15'
# 2. Example: from local ISO-time format `18:15` to hours incl. fractions `18.25`
def parse_to_hours(iso_time):
# your code using strip, split, type-conversion and calculations
# or use datetime.strptime(date_string, format)
return 18.25
# 3. Example: 'dinner time' for '18:15'
def mealtime_for(iso_time):
hours = parse_to_hours(iso_time)
# conditional returns
if hours >= 18 and hours <= 19:
return 'dinner time'
# default
return 'outside meal-time'
This way each function can be tested. For example using doctest:
def meal_time_for(hours):
"""a doctest in a docstring
>>> meal_time_for(1)
outside meal-time
>>> meal_time_for(18)
dinner time
>>> meal_time_for(12.75)
lunch time
"""
# implementation starts here
If all test-cases have been passed, then the assembled script should work correctly.
if __name__ == "__main__":
iso_time = ask_for_time()
meal_time = meal_time_for(iso_time)
print(f"{iso_time} is {meal_time}")
See also: