20190919-6 四则运算试题生成
作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631。
代码地址:https://e.coding.net/wangkefei/f4.git。
结对伙伴:徐姗姗
功能1. 四则运算:支持出题4个数的四则运算题目,所有题目要求作者有能力正确回答。
重点:导入 random 模块,运用random()函数,随机生成数字和运算符号。eval()函数实现计算运算式正确答案,与用户输入的结果进行比较,相等即回答正确,否则错误。
定义变量k用于计算回答正确数目。
代码:
import randomdef generate():ope = ['+', '-', '*', '/']num1 = random.randint(1, 10) # 随机生成1-10之间的数字num2 = random.randint(1, 10)num3 = random.randint(1, 10)num4 = random.randint(1, 10)ope1 = random.choice(ope) # 随机生成运算符ope2 = random.choice(ope)ope3 = random.choice(ope)exp = str(num1) + str(ope1) + str(num2) + str(ope2) + str(num3) + str(ope3) + str(num4)return expret = [] for i in range(20):ret.append(generate()) k = 0 for el in ret:print(el)print('?', end="")answer = float(input())if answer == eval(el): # eval()计算表达式的值k += 1print('答对啦,你真是个天才!')else:print('再想想吧,答案似乎是%d喔!' % (eval(el))) print('你一共答对%d道题,共20道题。' % k)
运行截图:
功能2. 支持括号。
重点:定义一个括号列表,随机生成列表的下标,表示生成左括号、右括号或不生成括号。生成括号的位置利用多层判断进行表示。
代码:
ope = ['+', '-', '*', '/']bra = ['(', '', ')'] # 0:生成左括号 1:不生成括号 2:生成右括号num1 = random.randint(1, 10)num2 = random.randint(1, 10)num3 = random.randint(1, 10)num4 = random.randint(1, 10)ope1 = random.choice(ope)ope2 = random.choice(ope)ope3 = random.choice(ope)left1 = random.randint(0, 1)left2 = random.randint(0, 1)left3 = random.randint(0, 1)right1 = random.randint(1, 2)right2 = random.randint(1, 2)right3 = random.randint(1, 2)if left1 == 0: # 括号成对出现的情况left2 = 1left3 = 1if right1 == 2:right2 = 1right3 = 1else:right2 = 2right3 = 1else:if left2 == 0:left3 = 1right1 = 1if right2 == 2:right3 = 1else:right3 = 2else:left3 = 0right1 = 1right2 = 1right3 = 2exp = bra[left1] + str(num1) + str(ope1) + bra[left2] + str(num2) + \ # 在功能一的算术式中加入括号可能出现的位置bra[right1] + str(ope2) + bra[left3] + str(num3) + bra[right2] + \str(ope3) + str(num4) + bra[right3]return exp
运行截图:
功能3. 限定题目数量,"精美"打印输出,避免重复。
重点:argparse()模块,用于用于解析命令行参数和选项。
重点代码:
if __name__ == "__main__":import argparseparser = argparse.ArgumentParser()parser.add_argument("-c", "--cin")args = parser.parse_args()if args.cin is None:f4().unlimited()else:f4().limited(args.cin)
运行截图:
功能4. 支持分数出题和运算。
重点:运用fractions 模块,用来执行包含分数的数学运算。
重点代码:
num1 = random.uniform(0, 1)num1 = random.Fraction(num1).limit_denominator(10)num2 = random.uniform(0, 1)num2 = random.Fraction(num2).limit_denominator(10)
def answer(self, eq):from fractions import Fraction as fanswer = f(eval(eq)).limit_denominator(1000)answer = str(answer)return answer
运行截图:
总结与体会:
1.结对编程的体会
第一次进行两个人组队编程,比本科期间的多人组队更加直接,效率更高。两个人坐在一起使用同一台电脑这种方式沟通起来更快,尤其是自己不好理解的问题,两个人可以互通有无。首先现有整体思路很重要,两个人商量后决定用python语言编写。以往自己编写代码的时候,经常会有bug改不过来,或者功能无法实现却找不出原因的情况。两个人共同编写就会多了一个思路,在一个人“走进死胡同”的时候能多提供一条路。这次作业对我来说有些困难,一开始思路不够清晰,python也是初学的一门语言,但好在比较简洁易懂,不是很复杂,但也花费了比想象长很多的时间。
2.至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件
(1)了解python函数花费时间较长但是收获最大。python有很多内置函数能实现很多功能,例如这次作业中的eval()、random()等,通过上网查找函数及其语法,将函数运用到程序中,比较方便。
(2)刚开始浏览完题目后认为重点在于逆波兰,于是直接搜索了python逆波兰相关的知识,理解了中缀转后缀,括号及运算符压栈和弹栈的原理,也花费了较长时间。但是后来发现python自带的eval()函数可以让电脑自动运算带有括号的运算式,不需要逆波兰也可以算出正确的结果。虽然逆波兰没有应用到代码中,但是了解了原理,也有很大收获。
(3)功能二添加括号很难实现,花费时间很长。开始没有思路,师兄提示了思路,我俩又参考了师兄的过去的代码,修改并结合到功能一中才得以实现。
(4)在编程过程中,将脑中的思路变成实际的代码对我来说是最困难的事。由于编程能力太弱,即使有了思路,也很难用双手实践出来。还好结对编程的过程中,同伴能够给予帮助,虽然花费时间长,但有很大收获。
(5)功能四中添加了argparse()模块,用于用于解析命令行参数和选项,在了解模块和加以运用上花费了较长时间,但同时也是收获最大的事件。
3、给出照片1张,包括结对的2位同学、工作地点、计算机,可选项包括其他能表达结对编程工作经历的物品或场景。
工作地点:计算机楼410室
计算机:实验室电脑
照片:
转载于:https://www.cnblogs.com/wkf-/p/11571777.html
20190919-6 四则运算试题生成相关推荐
- 软件工程第四次作业-四则运算试题生成
四则运算试题生成 博客园地址:http://www.cnblogs.com/liuyaoze/ git地址:https://git.coding.net/Vector121/f4.git 要求1: ( ...
- 付宇泽四则运算试题生成,结对
本作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631 git链接:https://e.coding.net/kangzh ...
- 作业 20180925-6 四则运算试题生成
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2148 此作业代码地址:https://git.coding.net/ti ...
- 罗杨美慧 20190919-6 四则运算试题生成,结对
本次作业要求参见:[https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631] 结对伙伴:徐丽君 功能1 四则运算 支持出题4个数的四则运 ...
- 宋晓丽 20190919-6 四则运算试题生成,结对
此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631] 代码的git地址[https://e.coding.net/s ...
- 一个对小学生的随机生成的四则运算试题
List item 一个针对小学生的四则运算试题 ,我这代码有一个功能就是用文件写了一个可以查看错题的功能~就非常简单 #include<stdio.h> #include<stdl ...
- 【软件工程基础】结对项目之四则运算题目生成
[软件工程基础]结对项目之四则运算题目生成 一,项目介绍 项目的github地址:https://github.com/qqqqqianru/sizeyunsuantimushengcheng 二.项 ...
- 小学生四则运算练习题生成工具
<!DOCTYPE HTML> <html> <head><meta charset="UTF-8"/><title>题 ...
- 软件工程项目 四则运算表达式生成----5
四则运算题目生成器 软件工程大作业的结对项目–四则运算题目生成器 写的是需求分析中的功能需求第四阶段的过程和内容 需求分析阶段的链接如下 软件工程项目 四则运算表达式生成----1 网页之前的功能需求 ...
- c语言试题生成系统,C语言在线考试系统——试题生成模块.doc
C语言在线考试系统--试题生成模块 PAGE 15摘要现如今,我们生活在信息大爆炸的时代,网络信息的应用已经进入我们的生活的各方各面.尤其在网络教学中,网上在线考试系统在其中扮演了重要的角色,相比于传 ...
最新文章
- valgrind概述及错误分析
- ECCV2020最佳论文解读之递归全对场变换(RAFT)光流计算模型
- java 实现接口后重写方法报错
- Mybatis 缓存系统源码解析
- Nginx安全配置研究
- Winform无法加载基类的错误解决
- linux 日志报告生成器,linux实战(一)----日志的截取-----文本过滤器grep、文本流式编辑器sed、报表生成器awk的运用...
- 百度-北大在Kaggle发起自动驾驶环境下的汽车6-DOF预测挑战赛
- 微信小程序 自定义tabBar
- 微软服务器虚拟化-Hyper-v详解
- 数据分箱2——等频、等距分箱
- 中文女和程序员的爱情奇遇[转]
- 【Oracle】表级别分区操作对索引(本地分区索引,全局分区索引,非分区索引)的影响
- 迁移学习Transfer Learning
- 好用免费的FTP软件工具推荐,支持中文 速来领取
- grep -v xxx 用法
- 幼儿园体育游戏电子计算机教案,【小班体育活动】_小班体育教案100篇_小班体育游戏活动教案5篇...
- 前端清空标签内子类的数据
- html一般用那种方式定位,使用三种方式定位html中的元素
- mysql 从大到小排序