作业要求 20180925-6 四则运算试题生成
本次作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2148
git地址https://git.coding.net/fanhongda/test.git
要求1 参考《构建之法》第4章两人合作,结对编程上述功能,要求每人发布随笔1篇 (代码是共同完成的,博客是分别完成的)。 (1) 给出每个功能的重点、难点、编程收获。(2)给出结对编程的体会,以及 (3) 至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件。 (10分)
本次作业在阅读《构建之法》时曾见过举例,并且书中作业也和这个类似,当时进行了一定的了解,但是本次作业所有的功能中都因为对语法的不熟悉造成了一些困难。
功能1 要随机生成数字、运算符号
功能2 要判断括号的生成条件,注意加减和乘除运算之间的优先级
功能3 要避免题目出现重复,并且要求打印出来的效果精美,不要造成题目混乱之感
功能4 实现分数运算要使用fraction(这个功能不会,所用函数也不熟悉,由同伴指导)
生成题目算式:
while(i <= 20): list=[] ls_2=[] list.append(createnum()) list.append(createOperator()) list.append(createnum()) list.append(createOperator()) list.append(createnum()) list.append(createOperator()) list.append(createnum()) ls_2 = string(list) list_str = ''.join(ls_2) print(list_str) answer = eval(list_str) answer_input = float(input('?')) if answer_input == answer: print("答对啦") t = t+1 elif answer != answer_input: print("答错了,答案是" + str(answer) +"哦") #list.clear() i=i+1 print("你答对了" + str(t) + "道,共20道")
括号的支持
def getk(list): str1 = [0,2,4] str2 = [3,5,7] start = random.choice(str1) if start == 4: list.append(')') list.insert(start, '(') if start == 0: end = random.choice(str2) if end == 7: list.append(')') else: list.insert(end,')') list.insert(start, '(') elif start == 2: end = random.choice(str2) if end == 7: list.append(')') else : list.insert(end, ')') list.insert(start, '(')
输出题目
if sys.argv[1] == '-c': if int(sys.argv[2]) < 0: print("题目数量必须是正整数") elif sys.argv[2] != sys.argv[2]: print("题目数量必须是正整数") else: n = int(sys.argv[2])
输出文件
temp=sys.stdout # 记录当前输出指向,默认是consle with open("outputlog.txt","a+") as f: sys.stdout=f # 输出指向txt文件 print(list_str1) sys.stdout=temp # 输出重定向回consle print(f.readlines()) # 将记录在文件中的结果输出到屏幕
支持分数
def reduction(self,num): a = num.numerator b = num.denominator divisor = function1().getMaxDivisor(a, b) a = a / divisor b = b / divisor num.setNumerator(a) num.setDenominator(b) return num def getMaxDivisor(self,numerator,denominator) : if denominator == 0: return numerator else: x = numerator%denominator return function1().getMaxDivisor(denominator, x)
(2)结对编程的感触
1、最大的感触是我和同伴赵美增的编程水平都不高,而且初次之外我的基础薄弱,导致进度缓慢
2、结对过程中有时会忘记自己的角色,指导者看到编程者出现错误总是会想自己上手
3、编程过程中难免出现分歧、但是讨论不仅仅为了解决问题而且得到了学习
4、结对编程是一个互相监督和学习的国过程,在此过程中容易发现个人编程中出现的问题并予以纠正,总体而言,这是一个做中学的过程,对能力提高有一定帮助
要求2要求2 给出照片1张,包括结对的2位同学、工作地点、计算机,可选项包括其他能表达结对编程工作经历的物品或场景。