Designing a sorting algorithm from scratch I'm taking a Python course and the current assignment is to create an algorithm that sorts numbers in ascending order (without using built-in sorting functions). I've had no programming experience before taking this course, so this might be a bit rough.

I got my script to successfully sort the numbers by figuring out the smallest number in the list each time through and moving it to a new list. This is obviously not very efficient since it has to loop dozens of times just for a short list, but I'm happy I finally got something to work! (Also, I think I need another elif to account for lists with repeat numbers.)

How can I clean it up? Is it more complex than it needs to be? I know there are far more efficient ways to sort, but I don't want to just copy someone else's established algorithm. I'd like to keep as much of this code in tact as possible while nipping and tucking.

def sortFunc(*arg):

    numList = list(arg)                     # Converts arguments into a list
    print('Before sorting: ',numList)       # Prints that list before sorting happens
    numSort = []                            # Creates an empty list to put sorted numbers into
    i = 0                                   # This is the index
    a = 1                                   # 'a' is the comparison number (this is the magic sauce)

    while numList:                          # As long as numList has numbers in it, loop the following

        if numList[i] == numList[-1] and\
           numList[i] &lt;= a:                 # If we're at the final index AND that last number is smaller than 'a'
            basket = numList.pop(i)         # then place that number in a basket
            numSort.append(basket)          # and dump the basket into the new list (numSort)
            i = 0

        elif numList[i] == numList[-1]:     # Otherwise, if we reach the last position in numList 
            i = 0                           # reset the index back to the first position
            a = a+1                         # and make the comparison number a little bigger

        elif numList[i] &lt;= a:               # If we're anywhere else in the list and that number is smaller than 'a'
            basket = numList.pop(i)         # then pop that number into the basket
            numSort.append(basket)          # and dump it unceremoniously into the new list (numSort)
            i = 0                           # Then reset the index back to the first position
            a = a+1                         # and make the comparison number a little bigger

        else:                               # If none of those things happen
            i = i+1                         # then move on to the next number in the list

    print('After sorting: ',numSort)        # Once the while loop is up, print the result!


sortFunc(67, 45, 2, 13, 1, 998)
Congrats of making your own sorting algorithm!
Speed/Efficiency
There are plenty of sorts on Wikipedia that are more efficient, if you want to take a look at them. I added rough speed (given random data) and difficulty estimates:

Bubble sort (very slow, very easy)
Selection sort (slow, easiest)
Insertion sort (also slow, but harder)
Merge sort (fast, hard)
Quicksort (faster, also hard)

Output
Typically it is bad practice to put a print statement inside a function, because you don't want your console flooded with text if you are calling that function a bunch of times. Instead, you can do return numSort inside your function and print(sortFunc(myList)) outside.
Naming
Now, I'm sure you will also get answers pertaining to variable names, but I'm not a stickler for that, plus your variables and functions seem good already.
Happy coding!