def decimal_to_fraction (number = decimal.Decimal()): if number == decimal.Decimal(): number = generate_decimal(0, 999) number_in_fraction = Fraction(number) answer = printable_fraction_from_fraction(number_in_fraction) question = "Convert {} to a fraction. Simplify the fraction, if required.".format(number) return (question, answer)
def fraction_as_percentage (number = Fraction ()): if number == Fraction(): possible_denominators = [2, 5, 10, 20, 25, 50] selection = random.randint (0, len (possible_denominators)-1) denominator = possible_denominators[selection] numerator = random.randint(2, 15) while (numerator == denominator and numerator % denominator != 0): numerator = random.randint (2, 15) number = Fraction(numerator, denominator) logging.info ("{} {} {}".format (selection, denominator, printable_fraction_from_fraction(number))) question = "Express fraction {} as a percentage.".format (printable_fraction_from_fraction(number)) original_precision = decimal.getcontext().prec decimal.getcontext().prec = 2 answer = number.numerator * 100/number.denominator answer = "{} %".format (answer) decimal.getcontext().prec = original_precision return (question, answer)
def __printable_expression_fractions (fraction_list, ops_list): if fraction_list == None or len (fraction_list) == 0 or ops_list == None or len (ops_list) == 0: logging.info ("Invalid parameters passed to function.") return False expression = "" for i in range (0, len (fraction_list)): if fraction_list[i].numerator > fraction_list[i].denominator: expression += "{}".format (printable_mixed_fraction(fraction_list[i])) else: expression += "{}".format (printable_fraction_from_fraction(fraction_list[i])) if i <= len (fraction_list) -2: expression += " {} ".format (ops_list[i]) return expression
def multiple_decimals_to_fractions (decimal_list = []): dec_list = [] if not decimal_list: i = 0 if len(decimal_list) <= 4: dec_list.append (decimal.Decimal(random.randint(1,9)/1000).quantize(decimal.Decimal('0.001'), rounding=decimal.ROUND_DOWN)) dec_list.append (decimal.Decimal(random.randint(111,999)/1000).quantize(decimal.Decimal('0.001'), rounding=decimal.ROUND_DOWN)) dec_list.append (decimal.Decimal(random.randint(1,9)/100).quantize(decimal.Decimal('0.01'), rounding=decimal.ROUND_DOWN)) dec_list.append (generate_decimal(0, 9999).quantize(decimal.Decimal('0.001'), rounding=decimal.ROUND_DOWN)) decimal_list = dec_list fraction_list = [] answer = "" question = "" for i in range (0, len (decimal_list)): fraction_list.append( Fraction(decimal_list[i])) answer += printable_fraction_from_fraction(fraction_list[i]) question += " {}".format (decimal_list[i]) if i != len (decimal_list) -1: answer += "," question += "," question = "Convert the decimals into their equivalent fractions : {}".format (question) return (question, answer)