Github项目地址

【小学生的四则运算】--PSP表格

psp

任务计划

计划完成需要的时间(min)

实际完成需要的时间

Planning

计划

120

60

Estimate

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

规划大致工作时间

70

60

Development

开发

1000

500

Analysis

需要分析(包括学习新技术)

100

30

Design Spec

生成设计文档

10

5

Design Review

设计复审

20

30

Coding Standard

代码规范

20

20

Design

具体设计

60

30

Coding

具体编码

300

400

Code Review

代码复审

100

30

Test

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

10

20

Reporting

报告

60

40

Test Report

测试报告

60

120

Size Measurement

计算工作量

10

10

Postmortem & Process

Improvement Plan

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

60

30

合计

2000

1385

项目要求

1、能自动生成小学四则运算题目

2、题目中不能出现负数或者结果为负数

3、除了整数的运算还包括真分数的运算

附加要求

1、自动产生括号

2、随机生成多个表达式

思路描述

这个题目可以被划分为以下三个问题:

列出随机的四则运算表达式。

计算所列出四则运算的结果。

接受用户输入并比较结果是否正确,并在命令行中表现出来。

如何解决

问题1

随机操作数、随机运算符、随机括号、随机长度等随机变量可以利用python自带随机函数取得。

需要考虑除数及分母为0时的情况,此时表达式不成立。

问题2

python中有一个函数eval能计算表达式的结果,但结果可能会为分数,要利用库fractons中的一个函数Fraction,把输出的结果全转成分数,所以整数的不变,小数的变分数

再使用一个result的列表存储每一个表达式结果,再用for提取其中的每个结果

问题三

利用input()函数输入答案,再用eval和Fraction转成数字。

使用一个answer 的列表存储每一个输入的答案,再用for 提取其中的每个答案并与result中的结果一一对应,判断其对错

具体程序设计

公共变量

变量

类型

作用

question

list

存储表达式

answer

list

存储回答的答案

result

list

存储表达式的结果答案

f

str

把列表中的值合成表达式

operation

list

存储运算符

函数

函数名

作用

integer(n)

随机产生几个表达式

func_integer(number)

表达式的随机生成与是否需要括号

result_integer(f, m)

根据表达式计算结果

代码说明

#integer 函数

1 definteger(n):2 ch = [] #存储表达式

3 number = random.randint(1, 4) #随机产生表达式的数量

4 for i inrange(number):5 rand = random.randint(0, 1) #随机产生0和1 判断是否使用括号

6 a = func_integer(number) #调用表达式产生函数,产生表达式

7 if rand ==0:8 op = operation[random.randint(2,3)] #产生*,/来连接有括号的表达式,避免产生+,—

9 rand = random.randint(0, 1) #随机产生0和1 判断是否使用内嵌括号或外嵌括号

10 if i != number - 1: #避免开始和结尾用无意义的括号

11 if rand ==0:12 ch.append('(')13 ch.append(a)14 ch.append(op)15 ch.append(random.randint(1,10))16 ch.append(')')17 ch.append(operation[random.randint(0, 3)])18 else:19 ch.append(a)20 ch.append(operation[random.randint(0, 3)])21 else:22 ch.append(a)23 ch.append(operation[random.randint(0, 3)])24 else:25 ch.append(a)26 ch.append(operation[random.randint(0, 3)])27

28 f = ''

29 for k,i in enumerate(ch): #把列表中的所有值用f一个个连起来

30 if k != len(ch)-1:31 f +=str(i)32 result_integer(f, n) #调用输出函数

View Code

#func_integer() 函数

1 deffunc_integer(number):2 f = ''

3 ch =[]4 rand = random.randint(0, 1) #选择内嵌或外嵌括号

5 if number != 1: #避免一个表达式也产生括号

6 if rand ==0:7 ch.append('(')8 op = operation[random.randint(0, 1)]9 ch.append(random.randint(1, 10))10 ch.append(op)11 ch.append(random.randint(1, 10))12 ch.append(')')13 else:14 op = operation[random.randint(0, 3)]15 if op == '/':16 a = random.randint(1, 10)17 ch.append(a)18 ch.append(op)19 ch.append(random.randint(a, 10))20 else:21 ch.append(random.randint(1, 10))22 ch.append(op)23 ch.append(random.randint(1, 10))24 else:25 op = operation[random.randint(0, 3)]26 if op == '/':27 a = random.randint(1, 10)28 ch.append(a)29 ch.append(op)30 ch.append(random.randint(a, 10))31 else:32 ch.append(random.randint(1, 10))33 ch.append(op)34 ch.append(random.randint(1, 10))35 for i in ch: #把产生表达式当成一个整体

36 f +=str(i)37 return f

View Code

#result_integer()函数

1 defresult_integer(f, m):2 try:3 n =eval(f)4 n = Fraction('{}'.format(n)).limit_denominator() #把表达式的结果转成分数

5 if n > 0: #判断结果是否大于0,否则重新产生表达式

6 #print('题目:')

7 question.append(f)8 result.append(n)9 #print('请输出答案:')

10 #x = Fraction('{}'.format(eval(input()))).limit_denominator()

11 else:12 integer()13 except:14 integer(m)

View Code

代码运行如下

总结及收获

本次项目虽然核心算法要求并不难,但是包括测试优化自身调整这些我始终不能够很好理解。

所以写这次博客我只能勉强的运行一下代码以及测试,并不能很好的做完每个函数的性能测试及优化

这个项目过程也可谓是坎坷不断。

因为我个人现在能力问题和一点点地个人时间问题,这项目代码还有很多需要改进的地方,例如无效化括号等等,我都没能很好的解决。

还有很多需要改进的地方,以后再做补充。

未完待续...

python函数编程四则运算并输出结果_python_四则运算相关推荐

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

    题目: (1)能自动生成小学四则运算题目,并且不能出现负数: (2)能支持真分数的四则运算: 思路: (1)四则运算加减乘除,采用两个随机数,由于不能出现负数,则对两个随机数进行比较大小再进行减法运算 ...

  2. Python.随机输入两个数和运算符进行四则运算

    Python.随机输入两个数和运算符进行四则运算 代码 import random def function(x,op,y):try:#将x,y转换为浮点数x,y=float(x),float(y)# ...

  3. 练习:Python 的字符串处理, 一个朴实无华的四则运算计算器,批量计算小学生四则运算表达式

    Python 官网:https://www.python.org/ Free:大咖免费"圣经"教程< python 完全自学教程>,不仅仅是基础那么简单-- My CS ...

  4. Python基础之格式化输出

    Python基础之格式化输出 1.Python格式化输出 1.1.字符串格式化输出I 引子 字符串格式化输出,主体是字符串,这个方法适用于字符串类型.有时候,我们会遇到这样的需求:我们想要制作一个字符 ...

  5. python从小到大的顺序输出-python从小到大的顺序输出

    时间:2020-10-29 本页为您甄选多篇描写python从小到大的顺序输出,python从小到大的顺序输出精选,python从小到大的顺序输出大全,有议论,叙事 ,想象等形式.文章字数有400字. ...

  6. Python函数编程——函数简介

    Python函数编程--函数简介 引子 现在老板让你写一个监控程序,24小时全年无休的监控你们公司网站服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所 ...

  7. python以垂直方式输出_python学习笔记

    Author: maddock Date: 2015-03-15 21:42:01 (暂时没有整理) python json文件处理 #coding:utf-8 importjson#data = [ ...

  8. python输入三个数输出最小值_python之输入一系列整数输出最大值

    在python学习中,我们经常会遇到:编写一个程序,输入若干整数或者是在一串字符中,输出最大值(数)的问题.那么在这里,我给出了几种常见的,也是几种比较常用的方法,希望能给大家的学习带来一定的帮助. ...

  9. python输入什么就输出什么意思_一文读懂Python的输入和输出

    本文介绍了Python的输入和输出,既然是Python代码,那么就一定有输出量,那么,Python是如何输出的呢? 输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'h ...

最新文章

  1. Android之网络丢包
  2. 洞悉物联网发展1000问之从精益管理到互联工业带来的启示是什么?
  3. 交换机用python定时备份
  4. 0305互联网新闻 | 钉钉发布“未来校园”千校计划;海南出台方案鼓励发展网约医疗服务...
  5. 【动态规划】分组背包 (ssl 2291)
  6. 基于深度学习模型WideDeep的推荐
  7. Android基础 写给新手的Android环境配置
  8. 一种连续语音识别系统的制作方法
  9. 实验3:理解Activity 的生命周期
  10. 类方法load和initialize的区别
  11. 最新傻妞搭建方法以及常见问题2022年9月25
  12. c语言url下载文件,C/C++轻松实现文件下载
  13. 软件设计模式Day01--简单的模拟鸭子应用
  14. native react 图片多选_N-第三方-react-native-image-picker,选择图片上传
  15. 火爆业界的明星, 下一代存储技术的先行: NVDIMM (下篇)
  16. matlab7如何运行程序,技术员为你示范win7系统运行matlab2010找不到指定的程序的具体方法...
  17. Web安全—敏感信息泄露
  18. java有参构造_java的有参构造有什么用
  19. 疯言疯语 -- 物联网与智能汽车与智慧城市
  20. vscode运行OpenCV项目时出现undefined reference to cv::xxxx

热门文章

  1. CHS-DRG医保支付(甘肃省庆阳市)分组解读第一篇:分组规则总述及MDCA篇
  2. mkisofs命令制作iso文件
  3. html5 js单击隐藏显示,《锋利的JS》 之 单击显示隐藏
  4. mac打开服务器文件管理,6款热门受欢迎的mac文件管理软件~
  5. ES6 Promises
  6. catkin屏蔽掉不想编译的package
  7. 在哪里设置自动锁定计算机,电脑锁定时间怎么设置_Win7系统锁定计算机如何设置的具体方法...
  8. useEffect和useLayoutEffect的区别
  9. ful join关联字段都含null值报错
  10. win10下openface快速安装与使用