# 1. Operating Specifications and Requirements

Blog class | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19 |
---|---|

Work requirements | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11376 |

Job target | Let's talk about the four operations in the past and implement and be familiar with writing articles in markdown |

student ID | 3190704215 |

# 2. Topic requirements

Write a program that can automatically generate elementary school four arithmetic problems, and then expand on this basis:

1) In addition to integers, four arithmetic operations of true fractions are also supported, for example: 1/6+1/8=7/24

2) The program requires the ability to process user input, judge right or wrong, and accumulate points

3) Program support can be selected by the user for addition, subtraction, multiplication and division operations

4) Use the -n parameter to control the number of questions generated, for example Myapp.exe -n 10, will generate 10 questions

# 3. Code submission and running screenshots

import random # random number from fractions import Fraction # operation of fractions list_questions=[] # list of topics list_answers =[] # List of corresponding answers #addition operation def add(): num1 = random.randint(1, 100) #Randomly generate two numbers num2 = random.randint(1, 100) chuli('+',num1,num2) #subtraction def cut(): num1 = random.randint(1, 100) num2 = random.randint(1, 100) if num1 < num2: num1, num2 = num2, num1 chuli('-', num1, num2) #multiplication def mul(): num1 = random.randint(1, 100) num2 = random.randint(1, 100) chuli('*',num1,num2) #division operation def div(): num1 = random.randint(1, 100) num2 = random.randint(1, 100) chuli('÷',num1,num2) #random operation def rand_nums(): rule = random.choice(['+','-','*','÷']) #random generation operator if rule == '+': #Generate addition questions, answers add() elif rule == '-': #Generate subtraction questions, answers cut() elif rule == '*': #Generate multiplication questions and answers mul() else: #generate division question, answer div() #True Fraction Operations def frac(): fz1 = random.randint(1,10) #Molecule 1 fm1 = random.randint(1,10) #Denominator 1 if fz1 > fm1: fz1,fm1 = fm1,fz1 # Guaranteed True Score num1 = Fraction(fz1,fm1) # Call Fraction to generate scores fz2 = random.randint(1,10) #Molecule 2 fm2 = random.randint(1,10) #Denominator 2 if fz2 > fm2: fz2,fm2 = fm2,fz2 num2 = Fraction(fz2,fm2) if num1 < num2: num1,num2 = num2,num1 # The result is guaranteed to be positive, except for division rule = random.choice(['+','-','*','÷']) chuli(rule,num1,num2) # Extraction of methods for processing and storing questions def chuli(flag, num1, num2): list_questions.append(str(num1) + str(flag) + str(num2) + '=') # Question, Answer Append to list if (flag == '+'): list_answers.append(num1 + num2) elif (flag == '-'): list_answers.append(num1 - num2) elif (flag == '*'): list_answers.append(num1 * num2) elif (flag == '÷'): num = Fraction(num1, num2) list_answers.append(num) # Judge right or wrong and calculate the score def judge(): count = 0 #Fractional value for i in range(len(list_questions)): print("the first{}question".format(i + 1)) print("topic:",list_questions[i]) y_answer = eval(input("Please enter your answer:")) #enter answer if y_answer == float(list_answers[i]): #judge right or not print("correct answer!") print("----------------") count += 1 else: print("Sorry, wrong answer! The correct answer is:{}".format(list_answers[i])) print("----------------") return count # Printing interface prompt information def display(): print("------------------------Welcome to the applet for randomly generating four arithmetic operations------------------------") print() print("********* 1. Addition (+)") print("********* 2. Subtraction (-)") print("********* 3. Multiplication ( x)") print("********* 4. division operation (÷)") print("********* 5. Random generation (randomly generate four operations)") print("********* 6. True fraction operation (randomly generated four operations)") print() print("Tip: For inexhaustible numbers, fractions can be used: such as 1÷3 = 1/3, 13÷67 = 13/67") print("---------------------------------------------------------------------------") #main function def main(): display() #call display function n = int(input("Please enter the number of questions:")) print("----------------") choose_rule = int(input("Please select an operation to perform(1-6): ")) for i in range(n): if choose_rule == 1: add() elif choose_rule == 2: cut() elif choose_rule == 3: mul() elif choose_rule == 4: div() elif choose_rule == 5: rand_nums() elif choose_rule == 6: frac() else: print("Incorrect input, please select (1-6)!") break count = judge() #Call the judge function, judge right or wrong, and score rate = count/n print("total{}points, a total of correct answers{}points, correct rate:{:.2f}%".format(n,count,rate*100)) main() #main function call

# 4. Personal summary

psp2.1 | Task content | Time required to complete the plan (min) | Time required to actually complete (min) |
---|---|---|---|

Planning | plan | 10 | 10 |

Estimate | Estimate how much time this task will take and plan the approximate work steps | 10 | 10 |

Development | develop | 120 | 110 |

Analysis | Needs analysis (including learning new technologies) | 15 | 10 |

Design Spec | Generate design documentation | 5 | 5 |

Design Review | Design Review | 5 | 5 |

Coding Standard | code specification | 3 | 2 |

Design | specific design | 10 | 15 |

Coding | specific code | 30 | 25 |

Code Review | code review | 5 | 7 |

Test | Testing (self-testing, modifying code, committing changes) | 10 | 15 |

Reporting | Report | 9 | 6 |

Test Report | testing report | 3 | 2 |

Size Measurement | Computational workload | 2 | 1 |

Postmortem & Process Improvement Plan | Post-event summary and process improvement plan | 3 | 3 |

When I saw this question, I went back to the elementary school, and chatted about the past like an essay naming it. The algorithms learned in those years may not be so easy to implement today through code (in fact, the skills are not good).

The first thought when I saw this question was to use the scientific computing language - Python, because it involves the operation of fractions. Compared with other programming languages, Python's support for mathematical operations may be better.

Secondly, Python is facing the end of the class. I want to experiment before the end of the class and try to use Python to perform some scientific calculations (in fact, the four arithmetic operations do not seem to be so high-end).

To sum up this programming, I have gained a lot. First of all, it is the python coding problem. Usually, I am too ambitious, just reading but not practicing, so emmmmm written in Python code, fortunately, I realized my shortcomings in time and corrected them in the future.

There is also the psp analysis, which has never been seen or heard in previous programming experience. Through this use, I have a clearer understanding of the programming process and my programming ability. There is a re-examination.

Finally, markdown syntax, there are always various problems when you change it, but it is best to grow up in various mistakes, and the finished product, as you can see.

Go to my homepage if you have time https://www.cnblogs.com/muyichenfeng/