作业要求参见: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 四则运算试题生成相关推荐

  1. 软件工程第四次作业-四则运算试题生成

    四则运算试题生成 博客园地址:http://www.cnblogs.com/liuyaoze/ git地址:https://git.coding.net/Vector121/f4.git 要求1: ( ...

  2. 付宇泽四则运算试题生成,结对

    本作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631 git链接:https://e.coding.net/kangzh ...

  3. 作业 20180925-6 四则运算试题生成

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2148 此作业代码地址:https://git.coding.net/ti ...

  4. 罗杨美慧 20190919-6 四则运算试题生成,结对

    本次作业要求参见:[https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631] 结对伙伴:徐丽君 功能1  四则运算 支持出题4个数的四则运 ...

  5. 宋晓丽 20190919-6 四则运算试题生成,结对

    此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631] 代码的git地址[https://e.coding.net/s ...

  6. 一个对小学生的随机生成的四则运算试题

    List item 一个针对小学生的四则运算试题 ,我这代码有一个功能就是用文件写了一个可以查看错题的功能~就非常简单 #include<stdio.h> #include<stdl ...

  7. 【软件工程基础】结对项目之四则运算题目生成

    [软件工程基础]结对项目之四则运算题目生成 一,项目介绍 项目的github地址:https://github.com/qqqqqianru/sizeyunsuantimushengcheng 二.项 ...

  8. 小学生四则运算练习题生成工具

    <!DOCTYPE HTML> <html> <head><meta charset="UTF-8"/><title>题 ...

  9. 软件工程项目 四则运算表达式生成----5

    四则运算题目生成器 软件工程大作业的结对项目–四则运算题目生成器 写的是需求分析中的功能需求第四阶段的过程和内容 需求分析阶段的链接如下 软件工程项目 四则运算表达式生成----1 网页之前的功能需求 ...

  10. c语言试题生成系统,C语言在线考试系统——试题生成模块.doc

    C语言在线考试系统--试题生成模块 PAGE 15摘要现如今,我们生活在信息大爆炸的时代,网络信息的应用已经进入我们的生活的各方各面.尤其在网络教学中,网上在线考试系统在其中扮演了重要的角色,相比于传 ...

最新文章

  1. valgrind概述及错误分析
  2. ECCV2020最佳论文解读之递归全对场变换(RAFT)光流计算模型
  3. java 实现接口后重写方法报错
  4. Mybatis 缓存系统源码解析
  5. Nginx安全配置研究
  6. Winform无法加载基类的错误解决
  7. linux 日志报告生成器,linux实战(一)----日志的截取-----文本过滤器grep、文本流式编辑器sed、报表生成器awk的运用...
  8. 百度-北大在Kaggle发起自动驾驶环境下的汽车6-DOF预测挑战赛
  9. 微信小程序 自定义tabBar
  10. 微软服务器虚拟化-Hyper-v详解
  11. 数据分箱2——等频、等距分箱
  12. 中文女和程序员的爱情奇遇[转]
  13. 【Oracle】表级别分区操作对索引(本地分区索引,全局分区索引,非分区索引)的影响
  14. 迁移学习Transfer Learning
  15. 好用免费的FTP软件工具推荐,支持中文 速来领取
  16. grep -v xxx 用法
  17. 幼儿园体育游戏电子计算机教案,【小班体育活动】_小班体育教案100篇_小班体育游戏活动教案5篇...
  18. 前端清空标签内子类的数据
  19. html一般用那种方式定位,使用三种方式定位html中的元素
  20. mysql 从大到小排序

热门文章

  1. 【安全攻防知识-4】CTF之MISC
  2. java的体重_标准体重计算示例代码
  3. 如何使用Google的Draco项目
  4. 利用FME对坐标文件进行坐标转换
  5. 我爱看的书-2021-4-17
  6. 我爱Ruby的三十七个理由
  7. 直方图的定义、意义和特征
  8. 2D基本知识入门学习
  9. 2021.09青少年软件编程(Python)等级考试试卷(五级)
  10. (转)怎样更好地理解并记忆泰勒展开式?