def generate_column_names_per_user(number_options=3):
    """
    This function generates a list which will be used for columns,
    
    Arguments:
    number_options -- this determines the number of options a forecaster has to fultill (by default=3)
    
    Returns:
    column_names -- a list containing the column names
    Example of return list:
    'user_id',
    
    'answer_option_a',
    'value_a',
    'fcast_date_a',
    
    'answer_option_b',
    'value_b',
    'fcast_date_b',
    
    'answer_option_c',
    'value_c',
    'fcast_date_c',
    
    """
    if number_options < 1 or number_options > 26:
        raise ValueError('Number of options out of range, sould be between 1 and 26')
    column_names = []
    
    
    for n_opt in range(number_options):
        column_names.append("answer_option_{}".format(chr(n_opt+ord('a'))))
        column_names.append("value_{}".format(chr(n_opt+ord('a'))))
        column_names.append("fcast_date_{}".format(chr(n_opt+ord('a'))))
    return column_names