freeCodeCamp Certified Full Stack Developer Curriculum

Caesar Cipher:

                    
                                def caesar(text, shift, encrypt=True):

                                    if not isinstance(shift, int):
                                    return "Shift must be an integer value."

                                    if shift < 1 or shift> 25:
                                        return "Shift must be an integer between 1 and 25."

                                    alphabet = "abcdefghijklmnopqrstuvwxyz"

                                    if not encrypt:
                                        shift = -shift

                                    shifted_alphabet = alphabet[shift:] + alphabet[:shift]
                                    translation_table = str.maketrans(alphabet + alphabet.upper(), shifted_alphabet +
                                    shifted_alphabet.upper())
                                    encrypted_text = text.translate(translation_table)
                                    return encrypted_text


                                def encrypt(text, shift):
                                    return caesar(text, shift)


                                def decrypt(text, shift):
                                    return caesar(text, shift, encrypt=False)


                                encrypted_text = encrypt("freeCodeCamp", 3)
                                print(encrypted_text)
                                encrypted_text = "Pbhentr vf sbhaq va hayvxryl cynprf."
                                decrypted_text = decrypt(encrypted_text, 13)
                                print(decrypted_text)

                    
                

Build an RPG Character:

                    
                                full_dot = "●"
                                empty_dot = "○"


                                def create_character(character_name, strength, intelligence, charisma):
                                    if not isinstance(character_name, str):
                                        return "The character name should be a string"
                                    if len(character_name) > 10:
                                        return "The character name is too long"
                                    if " " in character_name:
                                        return "The character name should not contain spaces"
                                    if not isinstance(strength, int) or not isinstance(intelligence, int) or not isinstance(charisma, int):
                                        return "All stats should be integers"
                                    if strength < 1 or intelligence < 1 or charisma < 1:
                                        return "All stats should be no less than 1"
                                    if strength > 4 or intelligence > 4 or charisma > 4:
                                        return "All stats should be no more than 4"
                                    if strength + intelligence + charisma != 7:
                                        return "The character should start with 7 points"
                                    res = ""
                                    res += character_name + "\n"
                                    res += "STR " + full_dot * strength + empty_dot * (10 - strength) + "\n"
                                    res += "INT " + full_dot * intelligence + empty_dot * (10 - intelligence) + "\n"
                                    res += "CHA " + full_dot * charisma + empty_dot * (10 - charisma)
                                    return res


                                print(create_character("Justin", 2, 3, 2))
                    
                

Build a Pin Extractor:

                    
                                def pin_extractor(poems):
                                    secret_codes = []
                                    for poem in poems:
                                        secret_code = ""
                                        lines = poem.split("\n")
                                        for line_index, line in enumerate(lines):
                                            words = line.split()
                                            if len(words) > line_index:
                                                secret_code += str(len(words[line_index]))
                                            else:
                                                secret_code += "0"
                                        secret_codes.append(secret_code)
                                    return secret_codes


                                poem = """Stars and the moon
                                shine in the sky
                                white and
                                until the end of the night"""

                                poem2 = "The grass is green\nhere and there\nhoping for rain\nbefore it turns yellow"
                                poem3 = "There\nonce\nwas\na\ndragon"

                                print(pin_extractor([poem, poem2, poem3]))
                    
                

Build a Number Pattern Generator:

                    
                                def number_pattern(n):
                                    if not isinstance(n, int):
                                        return "Argument must be an integer value."
                                    if n < 1:
                                        return "Argument must be an integer greater than 0."
                                    res = ""
                                    for i in range(n):
                                        res += str(i + 1) + " "

                                    return res.rstrip()


                                print(number_pattern(4))

                    
                

Build a Medical Data Validator:

                    
                                import re
                                medical_records = [
                                    {
                                        "patient_id": "P1001",
                                        "age": 34,
                                        "gender": "Female",
                                        "diagnosis": "Hypertension",
                                        "medications": ["Lisinopril"],
                                        "last_visit_id": "V2301",
                                    },
                                    {
                                        "patient_id": "p1002",
                                        "age": 47,
                                        "gender": "male",
                                        "diagnosis": "Type 2 Diabetes",
                                        "medications": ["Metformin", "Insulin"],
                                        "last_visit_id": "v2302",
                                    },
                                    {
                                        "patient_id": "P1003",
                                        "age": 29,
                                        "gender": "female",
                                        "diagnosis": "Asthma",
                                        "medications": ["Albuterol"],
                                        "last_visit_id": "v2303",
                                    },
                                    {
                                        "patient_id": "p1004",
                                        "age": 56,
                                        "gender": "Male",
                                        "diagnosis": "Chronic Back Pain",
                                        "medications": ["Ibuprofen", "Physical Therapy"],
                                        "last_visit_id": "V2304",
                                    },
                                ]


                                def find_invalid_records(patient_id, age, gender, diagnosis, medications, last_visit_id):

                                    constraints = {
                                        "patient_id": isinstance(patient_id, str) and re.fullmatch("p\d+", patient_id, re.IGNORECASE),
                                        "age": isinstance(age, int) and age >= 18,
                                        "gender": isinstance(gender, str) and gender.lower() in ("male", "female"),
                                        "diagnosis": isinstance(diagnosis, str) or diagnosis is None,
                                        "medications": isinstance(medications, list) and all([isinstance(i, str) for i in medications]),
                                        "last_visit_id": isinstance(last_visit_id, str) and re.fullmatch("v\d+", last_visit_id, re.IGNORECASE),
                                    }

                                    return [key for key, value in constraints.items() if not value]


                                def validate(data):
                                    is_sequence = isinstance(data, (list, tuple))

                                    if not is_sequence:
                                        print("Invalid format: expected a list or tuple.")
                                        return False

                                    is_invalid = False
                                    key_set = set(["patient_id", "age", "gender", "diagnosis", "medications", "last_visit_id"])

                                    for index, dictionary in enumerate(data):
                                        if not isinstance(dictionary, dict):
                                            print(f"Invalid format: expected a dictionary at position {index}.")
                                            is_invalid = True
                                            continue

                                        if set(dictionary.keys()) != key_set:
                                            print(f"Invalid format: {dictionary} at position {index} has missing and/or invalid keys.")
                                            is_invalid = True
                                            continue

                                        invalid_records = find_invalid_records(**dictionary)
                                        for invalid_record in invalid_records:
                                            print(f"Unexpected format '{invalid_record}: {data[index][invalid_record]}' at position {index}.")
                                            is_invalid = True
                                    if is_invalid:
                                        return False
                                    print("Valid format.")
                                    return True


                                validate(medical_records)
                    
                

Build a User Configuration Manager:

                    
                                def add_setting(settings, parameter):
                                    key, value = parameter
                                    key = key.lower()
                                    value = value.lower()

                                    if key in settings:
                                        return f"Setting '{key}' already exists! Cannot add a new setting with this name."
                                    else:
                                        settings[key] = value
                                        return f"Setting '{key}' added with value '{value}' successfully!"

                                def update_setting(settings, parameter):
                                    key, value = parameter
                                    key = key.lower()
                                    value = value.lower()
                                    if key in settings:
                                        settings[key] = value
                                        return f"Setting '{key}' updated to '{value}' successfully!"
                                    else:
                                        return f"Setting '{key}' does not exist! Cannot update a non-existing setting."

                                def delete_setting(settings, key):
                                    key = key.lower()
                                    if key in settings:
                                        del settings[key]
                                        return f"Setting '{key}' deleted successfully!"
                                    else:
                                        return "Setting not found!"

                                def view_settings(settings):
                                    if len(settings) == 0:
                                        return "No settings available."
                                    res = "Current User Settings:\n"
                                    for key, value in settings.items():
                                        key = key.capitalize()
                                        res += f"{key}: {value}\n"
                                    return res

                                test_settings = {}
                                print(add_setting(test_settings, ("TEST", "john")))
                                print(add_setting(test_settings, ("TEST", "john")))
                                print(update_setting(test_settings, ("TEST", "Josh")))
                                print(update_setting(test_settings, ("TEST1", "Josh")))
                                print(add_setting(test_settings, ("TEST1", "John White")))
                                print(delete_setting(test_settings, "TEST1"))
                                print(view_settings(test_settings))
                    
                

Debug an ISBN Validator:

                    
                        def validate_isbn(isbn, length):
                            try:
                                if len(isbn) != length:
                                    print(f'ISBN-{length} code should be {length} digits long.')
                                    return
                                main_digits = isbn[0:length - 1]
                                given_check_digit = isbn[length - 1]
                                main_digits_list = [int(digit) for digit in main_digits]
                                # Calculate the check digit from other digits
                                if length == 10:
                                    expected_check_digit = calculate_check_digit_10(main_digits_list[:length - 1])
                                else:
                                    expected_check_digit = calculate_check_digit_13(main_digits_list[:length - 1])
                                # Check if the given check digit matches with the calculated check digit
                                if given_check_digit == expected_check_digit:
                                    print('Valid ISBN Code.')
                                else:
                                    print('Invalid ISBN Code.')
                            except ValueError:
                                print("Invalid character was found.")

                        def calculate_check_digit_10(main_digits_list):
                            # Note: You don't have to fully understand the logic in this function.
                            digits_sum = 0
                            # Multiply each of the first 9 digits by its corresponding weight (10 to 2) and sum up the results
                            for index, digit in enumerate(main_digits_list):
                                digits_sum += digit * (10 - index)
                            # Find the remainder of dividing the sum by 11, then subtract it from 11
                            result = 11 - digits_sum % 11
                            # The calculation result can range from 1 to 11.
                            # If the result is 11, use 0.
                            # If the result is 10, use upper case X.
                            # Use the value as it is for other numbers.
                            if result == 11:
                                expected_check_digit = '0'
                            elif result == 10:
                                expected_check_digit = 'X'
                            else:
                                expected_check_digit = str(result)
                            return expected_check_digit

                        def calculate_check_digit_13(main_digits_list):
                            # Note: You don't have to fully understand the logic in this function.
                            digits_sum = 0
                            # Multiply each of the first 12 digits by 1 and 3 alternately (starting with 1), and sum up the results
                            for index, digit in enumerate(main_digits_list):
                                if index % 2 == 0:
                                    digits_sum += digit * 1
                                else:
                                    digits_sum += digit * 3
                            # Find the remainder of dividing the sum by 10, then subtract it from 10
                            result = 10 - digits_sum % 10
                            # The calculation result can range from 1 to 10.
                            # If the result is 10, use 0.
                            # Use the value as it is for other numbers.
                            if result == 10:
                                expected_check_digit = '0'
                            else:
                                expected_check_digit = str(result)
                            return expected_check_digit

                        def main():
                            try:
                                user_input = input('Enter ISBN and length: ')
                                values = user_input.split(',')
                                isbn = values[0]
                                length = int(values[1])
                                if length == 10 or length == 13:
                                    validate_isbn(isbn, length)
                                else:
                                    print('Length should be 10 or 13.')
                            except IndexError:
                                print("Enter comma-separated values.")
                            except ValueError:
                                print('Length must be a number.')



                        # main()