四则运算
首先,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()')得出结果。