第五次作业之四则运算
Posted JanzKing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五次作业之四则运算相关的知识,希望对你有一定的参考价值。
首先,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()\')得出结果。
以上是关于第五次作业之四则运算的主要内容,如果未能解决你的问题,请参考以下文章