def DataError(datatype, datarange, num, strlen): ''' dataSampling函数的异常生成函数 :param datatype:Type of random data :param datarange: :param num:Random number :param strlen:length of string :return: a data set ''' if ie('Type', datatype, (int, str, float)).ErrorSelection(): raise DatatypeError(datatype) if ie('Iter', datarange).ErrorSelection(): raise DatarangeError(datarange) if ie('Range', datarange).ErrorSelection(): raise RangeError if type(num) is not int: raise NumError if type(strlen) is not int: raise StrlenError
def dataScreening(data, datatype, *condition): ''' :param data:Iterative random data type :param condition: if type of the values in data is 'int' or 'float': condition[0] uses '[]','()','(]' and '[)' to represent the opening or closing condition of the section condition[1] is a tuple which represents the upper and lower boundaries of data if type of the values in data is 'str': conditions means substrings of string :return:Filter results ''' try: if ie('Iter', data).ErrorSelection(): raise DatarangeError(data) result = set() if datatype is int or datatype is float: section = condition[0] datarange = condition[1] for value in data: if section == '[]' and value >= datarange[ 0] and value <= datarange[1]: result.add(value) if section == '()' and value > datarange[ 0] and value < datarange[1]: result.add(value) if section == '(]' and value > datarange[ 0] and value <= datarange[1]: result.add(value) if section == '[)' and value >= datarange[ 0] and value < datarange[1]: result.add(value) if datatype is str: substrings = condition for value in data: for substring in substrings: if substring in value: result.add(value) return result except DatarangeError as e: print("Type", e.datatype, "is not include") except ValueError as e: print(e) except MemoryError as e: print(e) except TypeError as e: print(e) except Exception as e: print(e) traceback.print_exc()