随机生成两个数的四则运算

Github项目地址:

https://github.com/123diandian/sizeyunsuan

PSP


PSP2.1


Personal Software Process Stages


预估耗时(分钟)


实际耗时(分钟)


Planning


计划


10


20


Estimate


估计这个任务需要多少时间


1440


2200


Development


开发


700


200


Analysis


需求分析 (包括学习新技术)


180


100


Design Spec


生成设计文档


5


5


Design Review


设计复审 (和同事审核设计文档)


10


15


Coding Standard


代码规范 (为目前的开发制定合适的规范)


5


10


Design


具体设计


40


30


Coding


具体编码


300


400


Code Review


代码复审


30


40


Test


测试(自我测试,修改代码,提交修改)


30


20


Reporting


报告


120


100


Test Report


测试报告+博客


120


120


Size Measurement


计算工作量


10


15


Postmortem & Process Improvement Plan


事后总结, 并提出过程改进计划


40


60


合计

 
3040


3335

题目要求:

能自动生成小学生四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)

除了整数外,还支持真分数的四则运算

解题思路:

  • 定义一个函数随机生成两个整数,并进行四则运算
  • 定义一个函数随机生成两个真分数,再定义一个函数对两个真分数进行四则运算(调用Fraction函数进行分数运算)
  • 用户输入自己的要求
  • 计算结果与用户的输入进行对比

设计函数:

  • 定义一个函数随机生成两个正整数并进行四则运算(减数要比被减数小;除数不能等于0且当被减数大于一时,除数要能整除被除数)
  • 定义一个函数随机生成两个真分数,再定义一个函数对两个真分数进行四则运算(调用Fraction函数进行分数运算;分母不能为0,且除数即生成的第二个分数不能等于0)

具体程序设计:

成员变量


成员名


类型


功能


t


int


输入测试类别,1.测试  2.练习  3.退出


n


int


输入运算类别,1.整数  2.真分数  3.混合  4.退出


k


int


输入题目的数量


p


float


每道题的分数


s


float


总的得分


q


列表


存储表达式


ans


列表


存储计算结果


da


int


是否查看答案,1.是  2.否


a


字符串


用户计算的答案

成员函数


函数名


功能


c1(q, ans)


两个整数的四则运算


creatF()


随机生成两个真分数


c2(q, ans)


两个真分数的四则运算


main()


主函数

核心代码:

 1 ##两个整数的四则运算
 2 def c1(q, ans):
 3     symbol = random.choice([‘+‘, ‘-‘, ‘*‘, ‘/‘])  # 生成随机符号
 4     if symbol == ‘+‘:
 5         n1 = random.randint(0, 100)
 6         n2 = random.randint(0, 100)
 7         q.append(str(n1) + ‘+‘ + str(n2) + ‘=‘)
 8         ans.append(n1 + n2)
 9     elif symbol == ‘-‘:
10         n1 = random.randint(0, 100)
11         n2 = random.randint(0, n1 + 1)
12         q.append(str(n1) + ‘-‘ + str(n2) + ‘=‘)
13         ans.append(n1 - n2)
14     elif symbol == ‘*‘:
15         n1 = random.randint(0, 100)
16         n2 = random.randint(0, 100)
17         q.append(str(n1) + ‘ב + str(n2) + ‘=‘)
18         ans.append(n1 * n2)
19     else:
20         n1 = random.randint(0, 100)
21         if n1 == 0:
22             n2 = random.randint(1, 100)
23         else:
24             n2 = random.randint(1, n1 + 1)
25             while n1 % n2:
26                 n1 = random.randint(1, 100)
27                 n2 = random.randint(1, n1 + 1)
28         q.append(str(n1) + ‘÷‘ + str(n2) + ‘=‘)
29         ans.append(Fraction(n1, n2)) 
 1 ##随机生成两个真分数
 2 def createF():
 3     fz1 = random.randint(0, 100)
 4     if fz1 == 0:
 5         fm1 = random.randint(1, 100)
 6     else:
 7
 8         fm1 = random.randint(fz1, 100)
 9     f1 = Fraction(fz1, fm1)
10     fz2 = random.randint(1, 100)
11     fm2 = random.randint(fz2, 100)
12     f2 = Fraction(fz2, fm2)
13     return f1, f2
 1 ##两个真分数的四则运算
 2 def c2(q,ans):
 3     symbol = random.choice([‘+‘,‘-‘,‘*‘,‘/‘])
 4     f1,f2 = createF()
 5     if symbol ==‘+‘:
 6         while f1+f2>1:
 7             f1,f2 = createF()
 8         q.append(str(f1)+‘+‘+str(f2)+‘=‘)
 9         ans.append(f1+f2)
10     elif symbol ==‘-‘:
11         f1,f2 = max(f1,f2),min(f1,f2)
12         q.append(str(f1)+‘-‘+str(f2)+‘=‘)
13         ans.append(f1-f2)
14     elif symbol == ‘*‘:
15         while f1*f2>1:
16             f1,f2 = createF()
17         q.append(str(f1)+‘ב+str(f2)+‘=‘)
18         ans.append(f1*f2)
19     else:
20         while f1/f2>1:
21             f1,f2=createF()
22         q.append(str(f1)+‘÷‘+str(f2)+‘=‘)
23         ans.append(Fraction(f1,f2))
 1 def main():
 2     while 1:
 3         print("输入类型序号: 1.测试  2.练习  3.退出")
 4         t = int(input())
 5         if t == 3:
 6             break
 7         elif t == 1:  ##测试
 8             print("输入想要的四则运算序号: 1.整数  2.真分数  3.混合  4.退出")
 9             n = int(input())
10             while n > 4:
11                 print("输入有误,重新输入")
12                 n = int(input())
13             if n == 4:
14                 break
15             print("输入题目的数量", end=‘  ‘)
16             k = int(input())
17             p = 100 / k
18             s = 0
19             q = []
20             ans = []
21             if n == 1:  ##整数测试
22                 for i in range(k):
23                     c1(q, ans)
24             elif n == 2:  ##分数测试
25                 for i in range(k):
26                     c2(q, ans)
27             elif n == 3:  ##混合测试
28                 for i in range(k):
29                     n = random.randint(1, 3)
30                     if n == 1:
31                         c1(q, ans)
32                     else:
33                         c2(q, ans)
34             for i in range(k):
35                 print("第{}题:{}".format(i + 1, q[i]), end=‘  ‘)
36                 a = input()
37                 if a == str(ans[i]):
38                     s = s + p
39             print("所得的分数为:{}".format(s))
40             print("是否查看正确答案:1.是  2.否", end=‘   ‘)
41             da = int(input())
42             if da == 1:
43                 for i in range(k):
44                     print(q[i] + str(ans[i]))
45
46
47
48         elif t == 2:  ##练习
49             print("输入想要的四则运算序号: 1.整数  2.真分数  3.混合  4.退出")
50             n = int(input())
51             while n > 4:
52                 print("输入有误,重新输入")
53                 n = int(input())
54             if n == 4:
55                 break
56             print("输入题目的数量", end=‘  ‘)
57             k = int(input())
58             q = []
59             ans = []
60             if n == 1:
61                 for i in range(k):
62                     c1(q, ans)
63             elif n == 2:
64                 for i in range(k):
65                     c2(q, ans)
66             elif n == 3:
67                 for i in range(k):
68                     n = random.randint(1, 3)
69                     if n == 1:
70                         c1(q, ans)
71                     else:
72                         c2(q, ans)
73             else:
74                 print("输入有误!请重新输入")
75
76             for i in range(k):
77                 print("第{}题:{}".format(i + 1, q[i]), end=‘  ‘)
78                 a = input()
79                 if a == str(ans[i]):
80                     print("回答正确")
81                 else:
82                     print("回答错误,正确答案是:{}".format(ans[i]))
83         else:
84             print("输入有误!请重新输入")
85
86 profile.run(‘main()‘)

运行效果:



测试真分数的四则运算

练习混合型的四则运算:

效能分析:

可以看到所用时间为0.047s。

原文地址:https://www.cnblogs.com/123diandian/p/10549458.html

时间: 2024-08-03 19:07:35

随机生成两个数的四则运算的相关文章

shell   随机生成10个数,找出最大值

分析:随机生成10个数?  生成随机数,这里用RANDOM函数,我把生成的这10个数定义为一个数组array,定义MAX的初始值为array[0] 使用for循环进行与每一个元素的值进行比较,如果有比array[0]大的,假如array[3]比array[0]大,那么就把array[3]的值赋值给MAX,遍历比较每个数组元素,最后输出MAX的值即可! 看看执行情况....                      文本 #!/bin/bash #Author:wangergui       Em

在1-10000中随机生成100个数

题意:在1-10000中随机生成100个数,1-10000已经放在数组中,要求时间和空间都要O(1). 思路:因为空间要O(1),所以我们可以想到这一定是在原本数组的基础上操作,时间也要O(1)的话,证明我们无法Hash后再判重.所以我们可以这么想用一个指针表示目前已经生成好的随机数,那么这个指针从1开始,每次都从剩下的数中随机取一个和当前指针交换就可以完成了,自己写了代码,有错求指出来. import java.util.ArrayList; import java.util.HashSet;

python内置的一个好玩的函数-zip,并且巧妙的实现按概率随机生成有限个数的字符串。

python有一个比较有意思的内置函数-----zip,可以把传入的两组list进行一个组合变形,再输出子元素为tuple的list,不过变形的方式比较抽象. 举个例子: A=[1,2,3,4,5,6] B=['a','b','c','d'] v1=zip(A,B) v1的结果为: [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')] 比较直观的理解就是,A和B是两道拉链上的扣子,生成的list的子tuple,每一组tuple就是一对扣好了的扣子,并且从每组list的

随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中

设计思路: 1.使用random随机产生10个数,存入数组中 2.使用for循环把结果存入一个String对象中 3.使用for循环求出数组中所有元素的和 4.使用JTextArea和JOptionPane输出数组的内容 程序流程图: 源程序代码: import javax.swing.*; public class InitArray { public static void main( String args[] ) { String output = ""; int num=0;

java Random随机生成一个数

package java05; import java.util.Random; /* Random随机生成一个数字 1.导包: import java.util.Random; 2.创建 Random r = new Random(); 3.使用 int num = r.nextInt()不带参数是随机生成一个数字在int所有范围内 int num = r.nextInt(n); 带参数代表范围,左闭右开 * */ public class DemoRandomnum { public sta

个人项目1:随机生成30道整数四则运算题

使用的语言:C# 基本思路:运用最近学习的C#窗体应用程序设计两个按钮一个显示的窗口,运用Random生成随机数,编写程序,调试运行. 窗体设计 代码 namespace 随机四则运算 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { Application.Exit();

在一个范围内随机生成指定个数的不重复随机数

public static void setRandom(int min, int max, int n, HashSet<Integer> set) { Random random = new Random(); for (int i = 0; i < n; i++) { int ranInt = random.nextInt(max - min + 1); if(!set.add(ranInt)){ i--; } } }

软件工程实验一--编程随机生成30个四则运算,算数包括100以内的整数和真分数。

软件工程实验一: ——编程随机生成30个四则运算,算数包括100以内的整数和真分数. 实验思路:先利用rand()函数随机生成两个算数,包括100以内的整数和真分数,生成100以内的整数,用rand()%100,为了避免在除法运算中除数不能为零,所以运算符右边的整数直接用1+rand()%99:在随机生成真分数时,我先生成两个整数,来充当分子和分母,同样分母不能为零,用1+rand()%99.加减乘除四则运算有整数与整数之间的运算,分数与分数之间的运算,整数和分数之间的运算,分数和整数之间的运算

随机生成30道100以内的四则运算题

设计思路: 1.利用随机数法随机生成两个随机数 1.1控制随机数在100以内 1.2随机数不等于0 2.运算符的问题 1.1运用求余方式得到的1,2,3,4分别表示“+”,“-”,“*”,“/” 3.真分数的表示方法 1.1还是利用随机数法生成两个随机数 1.2比较生成的随机数的大小,小的作为分子,大的作分母,得到真分数 4.输出运算结果,用1,2分别表示整数运算和有真分数参与的运算 在有真分数参与时,是在一定程度上的随机,并不是完全的随机,有待改进 代码: #include <iostream