python函数编程四则运算并输出结果_python四则运算

题目:

(1)能自动生成小学四则运算题目,并且不能出现负数;

(2)能支持真分数的四则运算;

思路:

(1)四则运算加减乘除,采用两个随机数,由于不能出现负数,则对两个随机数进行比较大小再进行减法运算,除法一向特殊,所以在随机数的取值范围中设置不包括0。

(2)真分数运算在pycharm中导入fractions库,其余类似

实现过程:

设计三个函数:

def newint() 生成整数四则运算

def newfra() 生成真分数四则运算

def newtest() 生成制定指定数量的四则运算题目

函数关系:

newint()与newfra()为独立的函数,负责生成随机四则运算,newtest()则随机调用上述两个函数生成题目。详细描述请看下方代码

def newint():

opr= ['+','-','×','÷']

fh= random.randint(0,3)

n1= random.randint(1,20)

n2= random.randint(1,20)

rjg= 0

if fh== 0:

rjg= n1+ n2

elif fh== 1:

n1, n2= max(n1, n2),min(n1, n2)

rjg= n1- n2

elif fh== 2:

rjg= n1* n2

elif fh== 3:

n1, n2= max(n1, n2),min(n1, n2)

while n1% n2 != 0:

n1= random.randint(1,10)

n2= random.randint(1,10)

n1, n2= max(n1, n2),min(n1, n2)

rjg= int(n1/ n2)

print(n1, opr[fh], n2,'= ', end='')

return rjg

真分数四则运算类似。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

def newfra():

opr= ['+','-','×','÷']

fh= random.randint(0,3)

t1= random.randint(1,10)

t2= random.randint(t1,10)

n1= Fraction(t1, t2)

t1= random.randint(1,10)

t2= random.randint(t1,10)

n2= Fraction(t1, t2)

rjg= 0

if fh== 0:

rjg= n1+ n2

elif fh== 1:

n1, n2= max(n1, n2),min(n1, n2)

rjg= n1- n2

elif fh== 2:

rjg= n1* n2

elif fh== 3:

n1, n2= max(n1, n2),min(n1, n2)

rjg= n1/ n2

print(n1, opr[fh], n2,'= ', end='')

return rjg

newtest()函数是要求用户输入一个整数来输出算式的数量,采用while循环随机生成整数或者真分数运算,将答案保存在rjg列表的同时输出算式直到算式数量达到要求。最后输出rjg列表即输出答案。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

def newtest():

opr= ['+','-','×','÷']

print('输入题库所需要的题目数量')

n=int(input())

rjg=[]

m=0

while m<=(n-1):

fh= random.randint(0,4)

if fh==0:

print(m+1,end='、')

rjg.append(newfra())

print(' ')

else:

print(m+1,end='、')

rjg.append(newint())

print(' ')

m=m+1

m=0

print('答案:')

while m<=(n-1):

print(m+1,'、',rjg[m])

m=m+1

下列为主函数,第一个模式负责调用上述newint()、new函数,并获得函数返回值即算式答案,与用户输入值进行比较。第二个模式则是生成算式题目。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

print('1、四则运算')

print('2、制作题库')

n=int(input())

if n==1:

print('input "0000" to Quit')

while True:

fh= random.randint(0,4)

if fh== 0:

rjg= newfra()

jg= input()

if jg== '0000':

break;

sr= Fraction(jg)

if sr== rjg:

print('right')

else:

print('error. the Tight answer is', rjg)

else:

rjg= newint()

jg= input()

if jg== '0000':

break;

sr= int(jg)

if sr== rjg:

print('right')

else:

print('error. the Tight answer is', rjg)

if n==2:

newtest()

测试运行:

先测试运行第一个模式,如下图:

1347310-20180418191656974-281077232.png

第二个模式,先输出20个算式数量:

1347310-20180418192353072-1547968461.png

1347310-20180418192405342-1177548780.png

输出1000个算式数量,运行完成且无报错,部分截图如下:

1347310-20180418192452464-403845073.png

效能分析:

由于本人没有做过效能分析,在编写代码的时候尚未学习该功能,所以在修改程序的过程中没有相关记录。在改进完程序之后再进行学习效能分析才发现步骤错了,最终只能对改进后的程序直接进行分析,请谅解。本次分析采用软件pycharm内置的工具Profile,由于该工具是只对程序运行一次再输出这次运行的效能分析表格(具体功能尚未弄懂),所以根据本人程序,对newtest()函数输入10000的整数来输出10000个算式数量,结果如图(效能分析表格界面由Name、Call Count、Time(ms)、Own Time(ms) 4列组成。表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒):

1347310-20180418194444299-2090054283.png

1347310-20180418195250533-1574117956.png

PSP表格:

预计耗时(分钟)

是实际耗时(分钟)

Planning

计划

10

10

Estimate

估计这个任务需要多少时间

/

/

Development

开发

120

240

Analysis

需求分析

5

10

Design Spec

生成设计文档

/

/

Design Review

设计复审(和同事审核设计文档)

/

/

Coding Standerd

代码规范(为目前的开发制定合适的规范)

/

/

Design

具体设计

5

10

Coding

具体编码

30

60

Code Review

代码复审

5

10

Text

测试(自测,修改代码,提交修改)

10

30

Reporting

报告

10

20

Text Report

测试报告

10

20

Size Measurement

计算工作量

5

5

Postmortem & Process Improvement Plan

事后总结,并提出过程改进计划

5

5

Sum

合计

215

420

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值