作业地址:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631
代码地址:https://e.coding.net/ddd111/f4.git
结对伙伴:都雪冬
功能1和功能2重难点:
功能二包含功能一,所以我俩就把这两个功能放一起了。对于随机数的生成我们查阅了相关的书籍,对于python一些方法引用的不熟悉,导致走了很多弯路,对我们来说也是一个难点。括号的正确添加以及运算符的优先级设置也是重点。
部分代码:
def _f4(self): from random import randint from random import uniform from fractions import Fraction #为符号计算所导入的包 operator1 = ['+', '-', '*', '/'] operator2 = ['(', '', ')'] left_1 = randint(0, 1) left_2 = randint(0, 1) left_3 = randint(0, 1) right_1 = randint(1, 2) right_2 = randint(1, 2) right_3 = randint(1, 2) if left_1 == 0: left_2 = 1 left_3 = 1 if right_1 == 2: right_2 = 1 right_3 = 1 else: right_2 = 2 right_3 = 1 else: if left_2 == 0: left_3 = 1 right_1 = 1 if right_2 == 2: right_3 = 1 else: right_3 = 2 else: left_3 = 0 right_1 = 1 right_2 = 1 right_3 = 2 first_num = randint(1, 20) first_num = Fraction(first_num).limit_denominator(10) second_num = randint(1, 20) second_num = Fraction(second_num).limit_denominator(10) third_num = randint(1, 20) third_num = Fraction(third_num).limit_denominator(10) fourth_num = randint(1, 20) x = randint(0, 2) y = randint(0, 3) z = randint(0, 3) equal = operator2[left_1] + str(first_num) + operator1[x] + operator2[left_2] + str(second_num) + \ operator2[right_1] + operator1[y] + operator2[left_3] + str(third_num) + operator2[right_2] + \ operator1[z] + str(fourth_num) + operator2[right_3] return (equal)
运行截图:
功能三重难点:
在功能一二的基础上,运用运用argparse模块来处理命令行参数。还需要输入的数字必须是正整数。如何将生成的表达式写入到本地的文件也是一个难点。
代码如下:
def _f4_integer_parser(self,x):
p = "题目数量必须是正整数。"
try:
x = int(x)
if x >= 0:
for i in range(x):
equal_1 = f4()._f4()
_right = f4()._f4_answer(equal = equal_1)
equal_1 = equal_1 + "="
print(equal_1.ljust(50), _right)
else:
print(p)
except:
print(p)
return(0)
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-c", "--cin")
args = parser.parse_args()
if args.cin == None:
f4()._f4_input()
else:
f4()._f4_integer_parser(args.cin)
运行截图:
截图如下:
功能4重难点:
是在学长的帮助下编写的,运用random.uniform(a,b) 方法生成随机浮点数,在[a,b)范围内,然后运用fractions.Fraction()方法生成分数形式。详细的功能还不是很理解。
总结:
在此次的结对编程中,我的编程能力较弱,在同伴的的帮助下以及相关资料的查阅过程中,还寻求了上届学长的帮助,让我对python这门语言有了更深刻的理解,同时也学会了许多方法。结对使得彼此能之处对方的缺点,同时也更好的提高自己的能力,取长补短,节省了大量走弯路的时间。
工作环境:星华公寓214
使用的是都雪冬的电脑。