def indexOfSmallestInt(listOfInts):
    """
    return index of smallest element of non-empty list of ints, or False otherwise

    That is, return False if parameter is an empty list, or not a list
    parameter is not a list consisting only of ints

    By "smallest", we mean a value that is no larger than any other
    value in the l  There may be more than one instance of that value.
    Example:  in [7,3,3,7],3 is smallest

    By "index", we mean the subscript that will select that item of the list when placed in []
    Since there can be more than one smallest, we'll return the index of the first such value in those cases,
    i.e. the one with the lowest index.

    >>> indexOfSmallestInt([])
    False
    >>> indexOfSmallestInt('foo')
    False
    >>> indexOfSmallestInt([3,5,4.5,6])
    False
    >>> indexOfSmallestInt([40])
    0
    >>> indexOfSmallestInt([-90,40,70,80,20])
    0
    >>> indexOfSmallestInt([10,30,-50,20,-50])
    2
    >>>
    """


    if type(listOfInts)!=list or listOfInts==[]: # Return False if not a list or is empty
        return False

    currentMinIndex = 0
    for i in range(0,len(listOfInts)):
        if type(listOfInts[i])!=int:
            return False    # Return False if not all elements are ints
        if listOfInts[i] < listOfInts[currentMinIndex]:
            currentMinIndex = i
    return currentMinIndex