Build a User Configuration Manager - Build a User Configuration Manager

Tell us what’s happening:

My code seems to be working ( i am getting the expected output), but for some reasons i am falling the Tasks 4,5,8 and 12. Could someone please help?

Your code so far

def convert_setting_to_lowercase(setting):
    key, value = setting
    key_lower = key.lower() if isinstance(key, str) else key
    value_lower = value.lower() if isinstance(value, str) else value
    return (key_lower, value_lower)

def add_setting(settings, setting_to_be_added):

    key, value = setting_to_be_added
    
    key_lower,value_lower = convert_setting_to_lowercase(setting_to_be_added)
   
    for existing_key in settings.keys():
        if existing_key.lower() == key_lower:
            return f"Setting '{key_lower}' already exists! Cannot add a new setting with this name."
        else:
            continue
    settings[key] = value
    return f"Setting '{key_lower}' added with value '{value_lower}' successfully!"


def update_setting(settings,setting_to_be_updated):
    key,value = setting_to_be_updated
    
    key_lower,value_lower = convert_setting_to_lowercase(setting_to_be_updated)
   

    for existing_key in settings:
        print(existing_key)
        if existing_key.lower() == key_lower:
            settings[existing_key] = value
            return f"Setting '{key_lower}' updated to '{value_lower}' successfully!"
        else:
            continue
    return f"Setting '{key_lower}' does not exist! Cannot update a non-existing setting."


def delete_setting(settings,key_to_be_deleted):
    key = key_to_be_deleted.lower() if isinstance(key_to_be_deleted,str) else ''

    for existing_key in settings.keys():
        if existing_key.lower() == key:
            del settings[existing_key]
            return f"Setting '{key}' deleted successfully!"
        else:
            continue
    return f"Setting not found!"
    

def view_settings(settings):

    if settings == {}:
        return "No settings available."
    
    else:
        response = """Current User Settings:\n"""
        
        for k,v in settings.items():
            response += f"{k[0].upper()+k[1:]}: {v}\n"
        return response



test_settings = {
    'color': 'red',
    'THEMA': 'black'
}

print(add_setting(test_settings, ('BG', 'Bunt')))
print(add_setting(test_settings, ('Rand', 4)))
print(update_setting(test_settings, ('RAND', 3)))
print(delete_setting(test_settings, ('RAND')))
print(add_setting(test_settings, ('bg', 't')))

print(view_settings(test_settings))
    
    

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0

Challenge Information:

Build a User Configuration Manager - Build a User Configuration Manager

  1. You don’t need a for loop in update_setting() - 4,
  2. You don’t need a for loop in delete_setting() - 5,
  3. Only first character is upper (different method than upper), no slicing in dictionaries - 9,
  4. Again - don’t need for loop in update_setting, don´t need first print there - 12

Welcome to the forum @DL3 !

print(update_setting(test_settings, ('THEMA', 'FINE')))

What do you see in the console for current user settings?

And does it make sense to have an upper-case key in test_settings when the keys and values added to the dictionary are lower-cased?

Happy coding!