def prompt_major(tracked_majors=("cs", "data", "cyber"),
                 minors_are_tracked=True,
                 majors_with_minors=None,
                 tracked_minors=("data", "cyber", "math")):
    """Prompts the user to enter their major. Will continue this until
    'done' is entered. For certain majors, the user will be prompted for
    their minor.

    :param tracked_majors: The majors that are to be tracked
    :type tracked_majors: list[str]
    :param minors_are_tracked: If True, minors will be tracked for certain
    majors
    :type minors_are_tracked: bool
    :param majors_with_minors: The majors that have minors to be tracked
    :type majors_with_minors: list[str] or None
    :param tracked_minors: The minors that are tracked with certain majors
    :type tracked_minors: list[str]
    :return: A dictionary with majors as keys with the number of students as
    values. Will return a second similar dictionary for minors if minors
    are tracked.
    :rtype: dict, dict [minors_are_tracked=True] or dict
    [minors_are_tracked=False]
    """

    # REVIEW may add individual letters to temp_majors if
    # tracked_majors is str
    temp_majors = []
    for major in tracked_majors:
        temp_majors.append(major)
    tracked_majors = {}
    for major in temp_majors:
        tracked_majors[major] = 0
    other_majors = {"other": 0}

    temp_minors = []
    for minor in tracked_minors:
        temp_minors.append(minor)
    tracked_minors = {}
    for minor in temp_minors:
        tracked_minors[minor] = 0
    other_minors = {"other": 0}
    no_minor = {"none": 0}

    if majors_with_minors is None:
        majors_with_minors = ["cs"]

    def prompt_minor():
        """Will update tracked_minors and other_minors (outer scope) if
        certain majors are entered.

        :return: None
        """
        minor_prompt = input("\tEnter a minor: ").lower()
        if minor_prompt in tracked_minors.keys():
            tracked_minors[minor_prompt] += 1
        elif minor_prompt == "" or minor_prompt == "none":
            no_minor["none"] += 1
        else:
            other_minors["other"] += 1

    while True:
        major_prompt = input("Enter a major: ").lower()
        if major_prompt == "done":
            break
        elif major_prompt == "":
            pass
        elif major_prompt in tracked_majors.keys():
            tracked_majors[major_prompt] += 1
            if major_prompt in majors_with_minors and minors_are_tracked:
                prompt_minor()
        else:
            other_majors["other"] += 1

    # ** is unpack_operator
    majors = {**tracked_majors, **other_majors}
    minors = {**tracked_minors, **other_minors, **no_minor}
    if minors_are_tracked:
        return majors, minors
    else:
        return majors