python四则运算
源代码已上传至Github,https://github.com/chaigee/arithmetic,中的python_ari.py文件
题目:
(1)能自动生成小学四则运算题目,并且不能出现负数;
(2)能支持真分数的四则运算;
思路:
(1)四则运算加减乘除,采用两个随机数,由于不能出现负数,则对两个随机数进行比较大小再进行减法运算,除法一向特殊,所以在随机数的取值范围中设置不包括0。
(2)真分数运算在pycharm中导入fractions库,其余类似。
- from fractions import Fraction
实现过程:
设计三个函数:
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
真分数四则运算类似。
- 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列表即输出答案。
- 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函数,并获得函数返回值即算式答案,与用户输入值进行比较。第二个模式则是生成算式题目。
- 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()
测试运行:
先测试运行第一个模式,如下图:
第二个模式,先输出20个算式数量:
输出1000个算式数量,运行完成且无报错,部分截图如下:
效能分析:
由于本人没有做过效能分析,在编写代码的时候尚未学习该功能,所以在修改程序的过程中没有相关记录。在改进完程序之后再进行学习效能分析才发现步骤错了,最终只能对改进后的程序直接进行分析,请谅解。本次分析采用软件pycharm内置的工具Profile,由于该工具是只对程序运行一次再输出这次运行的效能分析表格(具体功能尚未弄懂),所以根据本人程序,对newtest()函数输入10000的整数来输出10000个算式数量,结果如图(效能分析表格界面由Name、Call Count、Time(ms)、Own Time(ms) 4列组成。表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒):
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 |
python四则运算的更多相关文章
- python四则运算2.0
github项目地址: https://github.com/kongkalong/python PSP 预估耗时(分钟) Planning .Estimate 48*60 Development . ...
- [Day01] Python基础
明天要完成的任务如下: Python 四则运算 Python 数据结构 Python 元算符(in.not in.is.and.or) 用户输入 (input.raw_input) 流程控制 缩进 ...
- 第一周作业.四则运算生成器(基于python)
题目 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数 ...
- 交互模式下测试python代码及变量的四则运算
在交互模式下,python代码可以立即执行,所以这很方便我们进行代码测试 1.命令窗口,输入python (如果没配置环境变量则需带python安装目录的绝对路径) >>> 这个就是 ...
- 软工第五次作业——Python效能分析之四则运算生成器
Github项目地址: https://github.com/JtvDeemo/elementary-arithmetic PSP PSP2.1 Personal Software Process S ...
- Python实现简单的四则运算
GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...
- 作业1+2.四则运算(改进后完整版,用python写的)_064121陶源
概述: 用一个星期加上五一的三天假期自学了python,在Mac系统上重新写出了四则运算的程序,编译器是PyCharm,相当于完成了作业2.d)"选一个你从来没有学过的编程语言,试一试实现基 ...
- (双人项目)四则运算 组员:杨钰宁 闫浩楠 开发语言:Python。
需求分析:1.适用人群:小学生. 2.能进行“+,—,*,/” 的四则运算.难度可以随时修改. 3.提交试卷后可以显示所得分数并显示错题个数. 4.可以显示答对的题及其打错的题的序号. 代码如下: i ...
- 基于Python实现的四则运算生成程序
Github项目地址:传送门 小组成员:黄晓彬(代码实现) 黄钰城(代码审查) 需求: 1. 使用 -n 参数控制生成题目的个数. 2. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的 ...
随机推荐
- MHA 安装与简单使用
MHA 在过去几年一直用的比较火,特别是在在传统复制的那个年代.至从有了GTID好像我们也可以把MHA给忘记了,但是很多企业现在还是在用的比较多.每个公司的MHA玩法也不太一样,但是本质都是差不多了. ...
- emqtt 试用(九)ssl认证 - 客户端 mqttfx 验证
一.代码生成证书 1.安装openssl,配置path变量 安装文件:Win64OpenSSL-1_1_0f.exe 安装openssl:C:\OpenSSL-Win64 配置path变量:C:\Op ...
- Python之面向对象三
面向对象的三大特性: 多态 多态指的是一类事物有多种形态.Python3天生支持多态. 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCM ...
- tcpdump记录
tcpdump -i eth0 -nn -A -X 'host 192.168.20.82 and port 9080' -i:interface 监听的网卡. -nn:表示以ip和port的方式显示 ...
- 关于block的循环引用的问题
在block的循环引用的问题上我们都知道如果在block内部修改外部的变量的时候,要加__block以防止循环引用的问题,但是如果block是当前对象的一个属性的时候,要修改当前对象的一个属性的时候就 ...
- Python/MySQL(四、MySQL数据库操作)
Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...
- Python3 hasattr()、getattr()、setattr()、delattr()函数
hasattr()函数 hasattr()函数用于判断是否包含对应的属性 语法: hasattr(object,name) 参数: object--对象 name--字符串,属性名 返回值: 如果对象 ...
- [MongoDB教程] 1.简介
MongoDB (名称来自「humongous (巨大无比的)」), 是一个可扩展的高性能,开源,模式自由,面向文档的NoSQL,基于 分布式 文件存储,由 C++ 语言编写,设计之初旨在为 WEB ...
- mongo 服务化与删除
MONGO 服务化 使用超级用户进入cmd到D:\mongodb\bin> 日志文件需要提前创建 mongod --bind_ip 0.0.0.0 --logpath D:\mongodb\d ...
- STM32 - GPIO
买了一个STM32F4的开发板,想把上面的东西重新学一下 快速过: 一.GPIO控制 void GPIO_DeInit(GPIO_TypeDef* GPIOx); //把某一个IO口恢复到默认值 /* ...