zoukankan      html  css  js  c++  java
  • 20200924-5 四则运算,结对

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11245

    编程语言:phython

    结对伙伴:樊培毅

    地点:寝室

    功能1. 四则运算

    功能2. 支持括号

    功能1和功能2一起实现,运行截图如下:

    难点:(1)括号的生成和四则运算符号的优先级

             (2)随机生成数字0-9

    关键代码:

     1 # coding=utf-8
     2 from random import randint
     3 from random import choice
     4 ops = ['+','-','*','/']
     5 bra = ['(', '', ')']
     6 #com = input('>') #用户输入
     7 cot = 0 #答对的题
     8 x = 0
     9 while x < 20 :
    10     s1 = randint(1,10)
    11     s2 = randint(1,10)
    12     s3 = randint(1,10)
    13     s4 = randint(1,10)
    14     op1 = choice(ops) #随机运算符
    15     op2 = choice(ops)
    16     op3 = choice(ops)
    17     """括号"""
    18     bra_1 = ['' , '' ,'']
    19     bra_2 = ['' , '' , '']
    20     i = ii =0
    21     while (i ==0 and ii ==2) or abs(i-ii)==1 
    22         or ii < i  :
    23         i = randint(0,2)
    24         ii = randint(0,2)
    25 
    26     bra_1[i] = '(';   bra_2[ii]=')'
    27 
    28     while op1 == op2 == op3 :
    29         op1 = choice(ops) #随机运算符
    30         op2 = choice(ops)
    31         op3 = choice(ops)
    32 
    33     eq = bra_1[0] + str(s1) + op1 + bra_1[1] + str(s2) + 
    34     bra_2[0] + op2 + bra_1[2] + str(s3) + bra_2[1] + op3 
    35     + str(s4) + bra_2[2]
    36     res = eval(eq)
    37     if len(str(res) ) > 5:
    38         continue
    39     x += 1
    40     print(eq)
    41     print("?")
    42     in_res=eval(input())
    43    # in_res =eval( input('?'))
    44     if in_res == res:
    45         print('算对啦,你真是个天才!')
    46         cot += 1
    47     else:
    48         print('再想想吧,答案似乎是%s喔!'%res)
    49 
    50 print('你一共答对%s道题,共20道题'%cot)

    功能3. 限定题目数量,"精美"打印输出,避免重复

    运行截图:

    难点:(1)将生成的四则运算试题打印到文本上

             (2)不能重复

    关键代码:

     1 from random import randint
     2 from random import choice
     3 import os 
     4 ops = ['+','-','*','/']
     5 bra = ['(', '', ')']
     6 com = input('>') #用户输入
     7 com_list = eval(com)
     8 '''
     9 while com_list[2].isdigit() == False:
    10     print('题目数量必须是正整数')
    11     com = input('>') #用户输入
    12     com_list = com.split()
    13     '''
    14 
    15 def xx():
    16     s1 = randint(1,10)
    17     s2 = randint(1,10)
    18     s3 = randint(1,10)
    19     s4 = randint(1,10)
    20     op1 = choice(ops) #随机运算符
    21     op2 = choice(ops)
    22     op3 = choice(ops)
    23     """括号"""
    24     bra_1 = ['' , '' ,'']
    25     bra_2 = ['' , '' , '']
    26     i = ii =0
    27     while (i ==0 and ii ==2) or abs(i-ii)==1 
    28         or ii < i  :
    29         i = randint(0,2)
    30         ii = randint(0,2)
    31 
    32     bra_1[i] = '(';   bra_2[ii]=')'
    33 
    34     while op1 == op2 == op3 :
    35         op1 = choice(ops) #随机运算符
    36         op2 = choice(ops)
    37         op3 = choice(ops)
    38 
    39     eq = bra_1[0] + str(s1) + op1 + bra_1[1] + str(s2) + 
    40     bra_2[0] + op2 + bra_1[2] + str(s3) + bra_2[1] + op3 
    41     + str(s4) + bra_2[2]
    42     res = eval(eq) 
    43     return [eq,res]
    44 
    45 
    46 
    47 eq = [];  res = []
    48 while len(res) < com_list:
    49     a = xx()
    50     if a[1] in res or len((str(a[1])) ) >6: #结果一样的直接就不要
    51         continue
    52     eq.append(a[0])
    53     res.append(a[1])
    54 
    55 f= open('题目.txt','w')
    56 for i in range(len(eq)):
    57     print('{0:15}'.format(eq[i]),end = '')
    58     print(res[i])
    59     xxx = 17 - len(eq[i])
    60     f.write(str(eq[i]+' '*xxx))
    61     f.write(str(res[i])+'
    ')
    62 f.close()
    63 os.system('题目.txt')  #决定是否打开txt

    功能4. 支持分数出题和运算

     未实现

    功能5 未来

    还有可能把程序改造成GUI版,把程序改造为web版,把程序移植为android/ios版。今天留好接口,明天就不发愁。 (0分)

    要求1 参考《构建之法》第4章两人合作,结对编程上述功能,要求每人发布随笔1篇 (代码是共同完成的,随笔有以下两种方式:(①允许两人写一份,得一份分数,二人均分;②如果每人写一份,内容不得抄袭,体会需要是自己的,分别得到自己博客的分数)。 (1) 给出每个功能的重点、难点、编程收获。(2)给出结对编程的体会,以及 (3) 至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件。 (10分)

    (每人写一份博客)

    关于结对编程的体会:

    首先自己是不擅长编程,代码能力较差,开始结对时会有一定的心理压力,但在开始后,发现两个人一起编程思路会比较活跃,氛围也较好,有简单又错的地方会互相提醒,遇到一些难点,比如逆波兰,两个人也会查资料,然后汇总自己认为较好的资料,认为结对编程效率还是很好的,互相督促共同提高,也在这个过程中有所收获。

    以下是完成作业过程中重要的时刻:

    1.开始想手动输入四则运算表达式,后来觉得手动输入20道题工程量也很大,就选取了随机生成

    2.在单元测试过程中,参考了之前的代码,复制来运行的时候总有问题,开始以为是某个函数不对,查了一些函数觉得没问题开始考虑是缩进的问题,又重新缩进。

    3.语言的选取,开始想用c语言,经过一番讨论认为phython会相对容易。

    4.功能三实现时,本来想对字符串做限定,后来由于函数总不对,就采用粗暴的直接输入数字了。

    5.一起查了很多资料,发现了自己平时学习的弊端。

      

    要求2 给出结对开发的截图证据,要求截图能够证明你们是在结对编程。 (5分)

    此图片为2人共同所有

    要求3 使用coding.net做版本控制。checkin 前要求清理 临时文件、可执行程序,通常执行 build-clean可以达到效果。(25分)

    代码地址为https://hiii1.coding.net/p/sizeyunsuan/d/zhao/git/tree/master

    虽然只有5分,但此题如果做错,因为教师得不到你的代码,所以会导致“功能实现”为负分。
    代码要求在 coding.net 做版本控制。要求push&pull时使用git客户端,不允许使用web页面。
    要求频繁checkin。要求在PSP中记录的每次离开键盘30分钟以上,需要checkin。如果你持续长达4小时不离开键盘,教师要求展示此项能力。量化的可考核的指标要求: 每个功能,要求有4次以上 checkin,展示(1)逐步实现功能和(2)修复bug时的过程; 每次checkin都要求可以成功编译。
    推荐git客户端tortoisgit。
    推荐先pull [https://github.com/weijunying2019102969/novelsfortest.git],里面有测试用例。

  • 相关阅读:
    node vue 项目部署问题汇总
    Java删除空字符:Java8 & Java11
    moco固定QPS接口升级补偿机制
    Selenium4 IDE特性:无代码趋势和SIDE Runner
    JsonPath工具类单元测试
    Mac上测试Internet Explorer的N种方法
    JsonPath工具类封装
    Selenium4 IDE,它终于来了
    质量保障的方法和实践
    JsonPath实践(六)
  • 原文地址:https://www.cnblogs.com/zhaoxp1/p/13772988.html
Copyright © 2011-2022 走看看