Does this basket ship free
The storefront shows a "free shipping" badge, but the rule has an exception for heavy baskets that finance insisted on.
- Baskets at or above the threshold ship free.
- Except that anything over 20 kg never ships free, whatever it cost.
- An empty basket does not ship free.
ships_free(basket_total: int, grams: int, threshold: int) → bool
Where you start
def ships_free(basket_total: int, grams: int, threshold: int) -> bool:
Worked examples
| Call | Result |
|---|---|
ships_free(50000, 3000, 30000) | True |
ships_free(50000, 25000, 30000) | False |
ships_free(30000, 1000, 30000) | True |
ships_free(29999, 1000, 30000) | False |
Hint
The weight rule overrides the value rule, so check it second — or check it first and return early.
Reference solution in Python
def ships_free(basket_total: int, grams: int, threshold: int) -> bool:
if basket_total <= 0 or grams > 20000:
return False
return basket_total >= threshold