天天看点

四则运算

首先,PSP表格如下:      

github地址如下:

https://github.com/zzq666/Test

#-*-coding:utf-8-*-
import profile
from fractions import Fraction
import random
def count():
    n = random.randint(1,2)
    if n == 1:
        x = ['+','-','*','÷']
        i = random.randint(1,100)
        j = random.choice(x)
        k = random.randint(1,100)
        if j == '+':
            answer = i + k
            print(i, j, k, '=')
        elif j == '-':
            i1 = max(i,k)
            k1 = min(i,k)
            answer = i1 - k1
            print(i1, j, k1, '=')
        elif j == '*':
            answer = i * k
            print(i, j, k, '=')
        elif j == '÷':
            answer = i / k
            print(i, j, k, '=')
        print('答案为:'+str(answer))
    elif n == 2:
        y = ['+', '-', '*', '÷']
        a = random.randint(1,100)
        b = random.randint(1,100)
        c = random.randint(1,100)
        d = random.randint(1,100)
        a1 = min(a,b)
        b1 = max(a,b)
        c1 = min(c,d)
        d1 = max(c,d)
        z = random.choice(y)
        if z == '+':
            ans = Fraction(a1, b1) + Fraction(c1, d1)
            print('(', a1, '/', b1, ')', z, '(', c1, '/', d1, ')', '=')
        elif z == '-':
            big = max(Fraction(a1, b1),Fraction(c1, d1))
            small = min(Fraction(a1, b1),Fraction(c1, d1))
            ans = big - small
            print('(',big,')',z,'(',small,')')
        elif z == '*':
            ans = Fraction(a1, b1) * Fraction(c1, d1)
            print('(', a1, '/', b1, ')', z, '(', c1, '/', d1, ')', '=')
        elif z == '÷':
            ans = Fraction(a1, b1) / Fraction(c1, d1)
            print('(', a1, '/', b1, ')', z, '(', c1, '/', d1, ')', '=')
        print('答案为:' + str(ans))
profile.run('count()')
  关于实现这个四则运算的过程,我是把整数和分数分开生成,考虑到随机生成,所以是通过抽取1或2,来进行接下来的步骤。
  当随机抽取到1的时候,则从1到100中间随机抽取2个数,并且考虑到小学生不认识负数,所以一定会把抽取到的较大的数作为减数,较小的数作为被减数。
生成整数之间的加减乘除效果如下:      

  当抽取到2的时候,进入真分数加减乘除,考虑到不能生成假分数,则分母要求大于分子,与被减数和减数的关系类似,一定把大的数赋予给分母

而小的数一定赋予给分子,这样就避免了出现假分数,而减式避免出现负数的过程与之同理,当随机生成分数加减乘除时,结果如下:

  效能分析通过profile.run('count()')得出结果。