#!/usr/bin/python import io from tokenize import tokenize # Check if code contains a sequence of tokens (given as a list of strings). def has_token_sequence(code, sequence): stream = io.BytesIO(code.encode('utf-8')) tokens = [t.string for t in tokenize(stream.readline) if t.string] for i in range(len(tokens)-len(sequence)+1): if tokens[i:i+len(sequence)] == sequence: return True return False def almost_equal(a, b, prec=1): """ Compares values a and b using at most prec decimal values. """ return int(a*10**prec) == int(b*10**prec) def string_almost_equal(s, a, prec=1): """ Searches string s for a value that is almost equal to a. Args: s (str): string to search a (float): value to find in string Returns: bool: True if successful, else False """ for v in s.split(): try: if almost_equal(float(v), a, prec): return True except: pass return False if __name__ == '__main__': print(has_token_sequence('x + y >= 0', ['>=', '0'])) print(has_token_sequence('x + y > 0', ['>=', '0']))