# Build a User Configuration Manager - Build a User Configuration Manager

**URL:** <https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359>\
**Category:** Curriculum Help\
**Tags:** python\
**Created:** [October 16, 2026, 6:39pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359 "2026-10-16T18:39:11Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![LeopoldStotch](https://avatars.discourse-cdn.com/v4/letter/l/f0a364/32.png) [@LeopoldStotch](https://forum.freecodecamp.org/u/LeopoldStotch)\
**Post date:** [October 16, 2026, 6:39pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/1 "2026-10-16T18:39:11Z")

</div>

### Tell us what’s happening:

I can’t seem to figure out how to convert the key into lowercase. I’ve tried to fix it using everything I know of but I can’t.

test\_settings = {  
“Volume”: 43,  
“Brightness”: “High”,  
“Theme”: “light”,  
“Notifications”: “Disabled”  
}

def add\_setting(settings, key\_value\_pair):  
key = test\_settings.keys().lower()  
value = test\_settings.values().lower()

```auto
if key in test_settings == test_settings.keys().upper:
    return test_settings.keys().lower()

```

### Your code so far

```py
test_settings = {
    "Volume": 43,
    "Brightness": "High",
    "Theme": "light",
    "Notifications": "Disabled"
}

def add_setting(settings, key_value_pair):
    key = test_settings.keys().lower()
    value = test_settings.values().lower()
    
    if key in test_settings == test_settings.keys().upper:
        return test_settings.keys().lower()

```

### Your browser information:

User Agent is: `Mozilla/5.0 (X11; Linux x86_64; rv:157.0) Gecko/20100101 Firefox/157.0`

### Challenge Information:

Build a User Configuration Manager - Build a User Configuration Manager

> **[freeCodeCamp.org](https://www.freecodecamp.org/learn/python-v9/lab-user-configuration-manager/build-a-user-configuration-manager)**
>
> Learn to Code for Free

GitHub Link: [freeCodeCamp/curriculum/challenges/english/blocks/lab-user-configuration-manager/684aaf9ec670c68d20efd0d0.md at main · freeCodeCamp/freeCodeCamp · GitHub](https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/challenges/english/blocks/lab-user-configuration-manager/684aaf9ec670c68d20efd0d0.md)

---

<div class="post-metadata">

**Author:** ![LeopoldStotch](https://avatars.discourse-cdn.com/v4/letter/l/f0a364/32.png) [@LeopoldStotch](https://forum.freecodecamp.org/u/LeopoldStotch)\
**Post date:** [October 16, 2026, 6:40pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/2 "2026-10-16T18:40:13Z")

</div>

Didn’t know the code would be there automatically. Just ignore that code at the top.

---

<div class="post-metadata">

**Author:** ![dhess](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dhess/32/406235_2.png) [@dhess](https://forum.freecodecamp.org/u/dhess)\
**Post date:** [October 16, 2026, 6:53pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/3 "2026-10-16T18:53:04Z")

</div>

Welcome to the forum @LeopoldStotch,

> [@LeopoldStotch](#):
>
> `key = test_settings.keys().lower()`

Can you say what is the parameter that represents the dictionary passed to this function? And what parameter represents the tuple passed to the function? Are you using those parameters in your function?

Happy coding

---

<div class="post-metadata">

**Author:** ![LeopoldStotch](https://avatars.discourse-cdn.com/v4/letter/l/f0a364/32.png) [@LeopoldStotch](https://forum.freecodecamp.org/u/LeopoldStotch)\
**Post date:** [October 16, 2026, 8:21pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/6 "2026-10-16T20:21:57Z")

</div>

Thanks for telling me that. I forgot to make the parameters into a tuple/dictionary. However, I still have an error with the script because I can’t turn the key/value into lowercase and I’m not sure if I have to turn the keys/values from the test settings lowercase or the keys/values from the settings parameter lowercase. Also, what would be the best way to convert them into lowercase and what would be the best operator to use (!=, ==, or something else)?

```python
test_settings = {
    "Volume": 43,
    "Brightness": "High",
    "Theme": "light",
    "Notifications": "Disabled"
}

def add_setting(settings, key_value_pair):
    settings = {
        "Brightness": "High",
        "Theme": "Light mode",
        "Notifications": "Disabled",
        "Volume": 69
    }
    key_value_pair = ("Brightness", "Theme", "Notifications", "Volume")
    key = settings.keys().lower()
    value = settings.values().lower()
    
    if not key:
        return key.lower()
    elif not value:
        return value.lower()

```

---

<div class="post-metadata">

**Author:** ![dhess](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dhess/32/406235_2.png) [@dhess](https://forum.freecodecamp.org/u/dhess)\
**Post date:** [October 16, 2026, 8:33pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/7 "2026-10-16T20:33:50Z")

</div>

> [@LeopoldStotch](#):
>
> ```auto
> settings = {
> "Brightness": "High",
> "Theme": "Light mode",
> "Notifications": "Disabled",
> "Volume": 69
> }
> key_value_pair = ("Brightness", "Theme", "Notifications", "Volume")
> 
> ```

The parameter values are determined by the arguments passed to the function call; you should not be setting them inside the function.

Try testing your code with the function call from Test #6:

```auto
add_setting({'theme': 'light', 'language': 'English'}, ('THEME', 'dark'))

```

By the way, your `test_settings` dictionary is showing keys and values that are not lowercase. Does that make sense if `add_settings` always converts the key-value tuple parameter to a lowercase key and value? (And I really don’t know why the test dictionary shows English capitalized; it shouldn’t)

> [@LeopoldStotch](#):
>
> ```auto
> key = settings.keys().lower()
> value = settings.values().lower()
> 
> ```

What parameter contains the key-value to be added to the dictionary? Are you using it here?

---

<div class="post-metadata">

**Author:** ![LeopoldStotch](https://avatars.discourse-cdn.com/v4/letter/l/f0a364/32.png) [@LeopoldStotch](https://forum.freecodecamp.org/u/LeopoldStotch)\
**Post date:** [October 16, 2026, 10:42pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/8 "2026-10-16T22:42:36Z")

</div>

> [@dhess](#):
>
> `add_setting({'theme': 'light', 'language': 'English'}, ('THEME', 'dark'))`

I see what you mean. I’ve changed the things you told me. I capitalized the values and keys because I was testing to see if the keys/values would lowercase. The key and value variables are what I used to lowercase the keys and values in the settings parameter.

---

<div class="post-metadata">

**Author:** ![dhess](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dhess/32/406235_2.png) [@dhess](https://forum.freecodecamp.org/u/dhess)\
**Post date:** [October 16, 2026, 11:25pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/9 "2026-10-16T23:25:10Z")

</div>

Please post your updated code if you need more help.

---

<div class="post-metadata">

**Author:** ![LeopoldStotch](https://avatars.discourse-cdn.com/v4/letter/l/f0a364/32.png) [@LeopoldStotch](https://forum.freecodecamp.org/u/LeopoldStotch)\
**Post date:** [October 17, 2026, 4:18pm UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/10 "2026-10-17T16:18:34Z")

</div>

I’ve figured everything out with converting key and value to lowercase. However, I can’t figure out how to solve step number 7. Take a look at the script and see if you can figure out because I sure can’t.

```auto
test_settings = {
    "Volume": 43,
    "Brightness": "High",
    "Theme": "light",
    "Notifications": "Disabled"
}

def add_setting(settings, key_value_pair):
    key, value = key_value_pair
    lower_key = key.lower()
    lower_value = value.lower()
    settings[lower_key] = lower_value
    
    if lower_key in settings:
        return f"Setting '{lower_key}' already exists! Cannot add a new setting with this name."

    elif lower_key not in settings:
        settings.update({lower_key:lower_value})
        return f"Setting '{lower_key}' added with value '{lower_value}' successfully!"

```

---

<div class="post-metadata">

**Author:** ![dhess](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dhess/32/406235_2.png) [@dhess](https://forum.freecodecamp.org/u/dhess)\
**Post date:** [October 18, 2026, 10:35am UTC](https://forum.freecodecamp.org/t/build-a-user-configuration-manager-build-a-user-configuration-manager/802359/11 "2026-10-18T10:35:18Z")

</div>

> [@LeopoldStotch](#):
>
> `settings[lower_key] = lower_value`

What do you think this is doing? Try printing` settings` before and after this line of code.
