def get_tide_station(stations):
    """ Prompts user to select a NOAA station from a list.

    Displays a list of NOAA tide station ID & descritions, and prompts 
    user to select one unless only on station is present. Returns the 
    selected (or sole) station ID and station description, or None if
    user declines to enter any value from a multi-station list.

    Args:
        stations (specific dict): ID key (int) : desc value (str).

    Returns:
        None, None if users enters '' at prompt (exit signal).
        stationID (int), station description (str).
    """
    station_list = sorted(stations.items())
    if len(station_list) == 1:
        return station_list[0][0], station_list[0][1]
    print('\n---Select desired station---')
    # print an enumerated list of station ID: descriptions
    for i, v in enumerate(station_list):
        print('{0}: {1} ({2})'.format(i+1, v[1], v[0]))
    found = False
    indices = len(station_list)
    while not found: # interate until a valid entry is submitted
        index = input('select station (1-{0}, return=exit): '.format(indices))
        if len(index) == 0: return None, None # exit when input empty
        try:
            index = int(index)
        except:
            print('invalid entry')
            continue
        if index < 0 or index > indices:
            print('invalid entry')
            continue
        # return station ID, station description for valid input
        return station_list[index-1][0], station_list[index-1][1]