#coding=utf-8 import math def math_map(v, al, ah, bl, bh): if al==ah: return bl if al < ah: v = max(min(ah,v),al) if al > ah: v = max(min(al,v),ah) return bl + (bh - bl) * (v - al) / (ah - al) def math_mean(myList): localList = [e for e in myList if type(e) == int or type(e) == float] if not localList: return return float(sum(localList)) / len(localList) def math_median(myList): localList = sorted([e for e in myList if type(e) == int or type(e) == float]) if not localList: return if len(localList) % 2 == 0: return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0 else: return localList[(len(localList) - 1) // 2] def math_modes(some_list): modes = [] # Using a lists of [item, count] to keep count rather than dict # to avoid "unhashable" errors when the counted item is itself a list or dict. counts = [] maxCount = 1 for item in some_list: found = False for count in counts: if count[0] == item: count[1] += 1 maxCount = max(maxCount, count[1]) found = True if not found: counts.append([item, 1]) for counted_item, item_count in counts: if item_count == maxCount: modes.append(counted_item) return modes def math_standard_deviation(numbers): n = len(numbers) if n == 0: return mean = float(sum(numbers)) / n variance = sum((x - mean) ** 2 for x in numbers) / n return math.sqrt(variance) def lists_sort(my_list, type, reverse): def try_float(s): try: return float(s) except: return 0 key_funcs = { "NUMERIC": try_float, "TEXT": str, "IGNORE_CASE": lambda s: str(s).lower() } key_func = key_funcs[type] list_cpy = list(my_list) return sorted(list_cpy, key=key_func, reverse=reverse) def format_content(mydict, cid): if 'lat' in mydict and 'long' in mydict: res = '{'+'"lat": "{}", "long": "{}", "clientid": "{}"'.format(mydict.pop('lat'),mydict.pop('long'),cid) if len(mydict)>0: res += ', "message": [' for d in mydict: res += '{{"label": "{}", "value": "{}"}},'.format(d,mydict[d]) res = res[:-1] + "]" res += '}' return res else: print('Invalid Input') def format_str(d): return str(d).replace("'",'"') def analyse_sharekey(url): import urequests import json response = urequests.get(url) if response.text == '-1': raise AttributeError('Invalid share key') else: result = json.loads(response.text) return (result['0'], result['1'], result['2'])