Learn Python List Comprehension by Building a Case Converter Program - Step 20

Tell us what’s happening:

So after trying to do this step for hours, i still cant do it. Whats the problem here.

Your code so far

def convert_to_snake_case(pascal_or_camel_cased_string):
    # snake_cased_char_list = []
    # for char in pascal_or_camel_cased_string:
    #     if char.isupper():
    #       converted_character = '_' + char.lower()
    #       snake_cased_char_list.append(converted_character)
    #     else:
    #         snake_cased_char_list.append(char)
    # snake_cased_string = ''.join(snake_cased_char_list)
    # clean_snake_cased_string = snake_cased_string.strip('_')

    # return clean_snake_cased_string


# User Editable Region

    snake_cased_char_list = [
        '_' + char.lower() if char.isupper()
        else char
        for char in pascal_or_camel_cased_string
    ]

# User Editable Region

    return ''.join(snake_cased_char_list).strip('_')

def main():
    print(convert_to_snake_case('aLongAndComplexString'))

main()

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36

Challenge Information:

Learn Python List Comprehension by Building a Case Converter Program - Step 20

Hi @tara.jitpattanakul,

With list comprehensions, we want to follow the following pattern:

list_name = [expression for item in iterable if condition]

The given code:

snake_cased_char_list = ['_' + char.lower() for char in pascal_or_camel_cased_string]

Already gives us everything in the pattern except the if condition. We will not need an else clause inside the list comprehension. So using your if char.isupper(), where would that go (using the pattern) in the list comprehension?

I hope this helps. Happy coding!

1 Like