- Read the guideline before starting.
- If you need additional information about
datetimemodule you can find it here.
Implement a Cafe class, whose instances have one attribute name.
Write a visit_cafe method with one parameter, visitor of type dict.
Due to the pandemic, not everyone can visit the cafe.
If the visitor does not have a vaccine key, it means that he is not vaccinated.
In this case, the method must raise a NotVaccinatedError exception.
kfc = Cafe("KFC")
visitor = {
"name": "Paul",
"age": 23,
}
kfc.visit_cafe(visitor) # NotVaccinatedErrorThe vaccine must not be expired, otherwise the method should raise an OutdatedVaccineError exception.
You can get an expiration_date from visitor["vaccine"] dictionary.
import datetime
kfc = Cafe("KFC")
visitor = {
"name": "Paul",
"age": 23,
"vaccine": {
"expiration_date": datetime.date(year=2019, month=2, day=23)
}
}
kfc.visit_cafe(visitor) # OutdatedVaccineErrorAnd the last rule: all visitors must wear masks. Otherwise visit_cafe
should raise an NotWearingMaskError exception.
kfc = Cafe("KFC")
visitor = {
"name": "Paul",
"age": 23,
"vaccine": {
"expiration_date": datetime.date.today()
},
"wearing_a_mask": False
}
kfc.visit_cafe(visitor) # NotWearingMaskErrorIf all the rules are met, then the person can visit the cafe and
the method should return the string "Welcome to {cafe.name}"
kfc = Cafe("KFC")
visitor = {
"name": "Paul",
"age": 23,
"vaccine": {
"expiration_date": datetime.date.today()
},
"wearing_a_mask": True
}
kfc.visit_cafe(visitor) == "Welcome to KFC"Write a function go_to_cafe which takes a friends list and a cafe.
It should return a string "Friends can go to {cafe.name}" if they are all allowed to visit it.
If at least one of the friend has problems with vaccines the function should return a message `"All friends should be vaccinated".
If everyone is vaccinated but somebody isn't wearing a mask
the function should return a message "Friends should buy {masks_to_buy} masks" where masks_to_buy is the number of
friends who don't have a mask.
friends = [
{
"name": "Alisa",
"vaccine": {
"expiration_date": datetime.date.today()
},
"wearing_a_mask": True
},
{
"name": "Bob",
"vaccine": {
"expiration_date": datetime.date.today()
},
"wearing_a_mask": True
},
]
go_to_cafe(friends, Cafe("KFC")) == "Friends can go to KFC"friends = [
{
"name": "Alisa",
"vaccine": {
"expiration_date": datetime.date.today()
},
"wearing_a_mask": False
},
{
"name": "Bob",
"vaccine": {
"expiration_date": datetime.date.today()
},
"wearing_a_mask": False
},
]
go_to_cafe(friends, Cafe("KFC")) == "Friends should buy 2 masks"friends = [
{
"name": "Alisa",
"wearing_a_mask": True
},
{
"name": "Bob",
"vaccine": {
"expiration_date": datetime.date.today()
},
"wearing_a_mask": True
},
]
go_to_cafe(friends, Cafe("KFC")) == "All friends should be vaccinated"Use the following project structure:
main.py
cafe.py
errors.pyAll errors should be defined in the errors.py module.
The Cafe class should be defined in cafe.py module.
The function should be implemented in main.py module.
Notes:
- Use
try/exceptto handle errors ingo_to_cafe - Be sure to pass descriptive messages when you raise the exception in the
visit_cafemethod - Create a
VaccineErrorparent class forNotVaccinatedErrorandOutdatedVaccineErrorerrors. Use it to catch both types of errors in the sameexceptclause. - You can work with dates using
datetimemodule. - You can compare two dates using
<operator:
import datetime
date1 = datetime.date(2020, 3, 4)
date2 = datetime.date(2022, 1, 30)
assert date1 < date2- To get the current date use
datetime.date.today()