Q:

Unferenced local variable?  But I can print it alright

For the life of me I do not understand why I get this error:
UnboundLocalError: local variable 'unsorted' referenced before assignment (while len(unsorted) > 0)

For this code, I'm also aware it's not the best implementation of selection sort:
def selection_sort(arr):
    unsorted = arr[:]
    sorted_arr = []
    while len(unsorted) > 0:
        lowest = arr[0]
        lowest_index = 0
        for i in range(len(unsorted)):
            if arr[i] < lowest:
                lowest = arr[i]
                lowest_index = i

        sorted_arr.append(lowest)
        del(unsorted, lowest_index)
    return sorted_arr

A:

You're getting this error because:
del(unsorted, lowest_index)

deletes the two variables unsorted and lowest_index, then at your next loop turn, you're trying to use them again.