Build a User Configuration Manager - Build a User Configuration Manager

Tell us what’s happening:

So, I’m super closed to being done. It’s just that for some reason on the view_settings() function the test cases say that I didn’t format the return string correctly and says that it should end in a new line character even though it looks exactly the same as what it should? Everything else is correct tho

Your code so far

current_settings = {
    "theme": "dark",
    "notifications": "enabled",
    "volume": "high"
}

test_settings = {
    "Theme": "light",
    "Notificatiosn": "disabled",
    "Volume": "Medium"
}

#settings paramater is the dictionary created, key_value is the values added
def add_setting(settings, key_value):
    #converts settings parameter key to lowercase
    settings_keys= []
    for key in settings.keys():
        settings_keys.append(key)

    #converts key_value's key in to lowercase:
    lowered_key = key_value[0].lower()

    #converts key_value's value in to lowercase:
    lowered_value = key_value[1].lower()

    #checks if "settings" parameter key exists
    for i in range(len(settings_keys)):
        if lowered_key == settings_keys[i]:
            return f"Setting '{key_value[0].lower()}' already exists! Cannot add a new setting with this name."   
    settings[lowered_key.lower()] = key_value[1].lower()
    return f"Setting '{key_value[0].lower()}' added with value '{key_value[1].lower()}' successfully!"


def update_setting(settings,key_value):
    #convert's the key of the key value into lowercase
    lowered_key = key_value[0].lower()
    
    #convert's the value of the key value into lower case
    lowered_value = key_value[1].lower()

    #converts settings parameter key to lowercase
    settings_keys= []
    for key in settings.keys():
        settings_keys.append(key)

    for i in range(len(settings_keys)):
        if lowered_key == settings_keys[i]:
            settings[lowered_key] = lowered_value
            return f"Setting '{lowered_key}' updated to '{lowered_value}' successfully!" 

    return f"Setting '{lowered_key}' does not exist! Cannot update a non-existing setting."


    

def delete_setting(settings, key):
    #convert's the key of the key value into lowercase
    lowered_key = key.lower()

    #converts settings parameter key to lowercase
    settings_keys= []
    for key in settings.keys():
        settings_keys.append(key)

    for i in range(len(settings_keys)):
        if lowered_key == settings_keys[i]:
            del settings[lowered_key] 
            return f"Setting '{lowered_key}' deleted successfully!" 

    return "Setting not found!"



def view_settings(settings):
    if len(settings) == 0:
        return "No settings available."

    #Gets the keys
    settings_keys= []
    for key in settings.keys():
        settings_keys.append(key)
    
    settings_values = []
    for value in settings.values():
        settings_values.append(value)

    string = ""
    for i in range(len(settings)):
        string += f"{settings_keys[i].capitalize()}: {settings_values[i]} \n"
        
    return f"Current User Settings\n{string}"


print(view_settings(current_settings))



Your browser information:

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

Challenge Information:

Build a User Configuration Manager - Build a User Configuration Manager

Hi @justinnyakundi232

For user test 25, check the puntuation.

For user test26, check the spacing.

Happy coding

So, I fixed the test case 25 by adding the missing semicolon, but I haven’t changed any other code and everything else is the same, it’s just that it fails test case 27 for some reason?

Please post the assertion error message.

what is the assertion message you found in the console instead?

Do your results end with JUST a newline, or is there something extra there?

OH, so in the string variable there was an added space. Thanks!