from itertools import product # Scenario: Determine a user's access level based on their role and subscription status. # Roles: 'admin', 'editor', 'member' # Subscription Status: 'premium', 'standard', 'free' role = 'editor' subscription = 'premium' def print_access(role, subscription): print(" using nested If Statement: ", end="") if role == 'admin': if subscription == 'premium': print("Admin with Premium Access: Full control.") else: # Admin with standard or free subscription print("Admin with Basic Access: Limited control.") else: if role == 'editor': if subscription == 'premium': print("Editor with Premium Access: Advanced editing features.") else: if subscription == 'standard': print("Editor with Standard Access: Basic editing features.") else: # Editor with free subscription print("Editor with Free Access: Read-only access.") else: # Member role if subscription == 'premium': print("Member with Premium Access: Ad-free content.") else: if subscription == 'standard': print("Member with Standard Access: Limited ads.") else: # Member with free subscription print("Member with Free Access: Ad-supported content.") print(" using elsif: ", end="") if role == 'admin' and subscription == 'premium': print("Admin with Premium Access: Full control.") elif role == 'admin': # Admin with standard or free subscription print("Admin with Basic Access: Limited control.") elif role == 'editor' and subscription == 'premium': print("Editor with Premium Access: Advanced editing features.") elif role == 'editor' and subscription == 'standard': print("Editor with Standard Access: Basic editing features.") elif role == 'editor': # Editor with free subscription print("Editor with Free Access: Read-only access.") elif role == 'member' and subscription == 'premium': print("Member with Premium Access: Ad-free content.") elif role == 'member' and subscription == 'standard': print("Member with Standard Access: Limited ads.") else: # Member with free subscription print("Member with Free Access: Ad-supported content.") print(" using match and case (Python 3.10+): ", end="") match (role, subscription): case ('admin', 'premium'): print("Admin with Premium Access: Full control.") case ('admin', _): # Any subscription for admin print("Admin with Basic Access: Limited control.") case ('editor', 'premium'): print("Editor with Premium Access: Advanced editing features.") case ('editor', 'standard'): print("Editor with Standard Access: Basic editing features.") case ('editor', _): # Any other subscription for editor print("Editor with Free Access: Read-only access.") case ('member', 'premium'): print("Member with Premium Access: Ad-free content.") case ('member', 'standard'): print("Member with Standard Access: Limited ads.") case ('member', _): # Any other subscription for member print("Member with Free Access: Ad-supported content.") case _: # Fallback for any other unhandled cases print("Unknown role or subscription combination.") def main(): # Roles: 'admin', 'editor', 'member' # Subscription Status: 'premium', 'standard', 'free' roles = ['admin', 'editor', 'member'] subscriptions = ['premium', 'standard', 'free'] for role, subscription in product(roles, subscriptions): print(f"role: {role}; subscription: {subscription} =>") print_access(role, subscription) if __name__ == '__main__': main()