今天小姨找我提需求了!用Python实现加减乘除模拟出题试卷

1. 输出100以内加法题试卷

小姨经常要给她儿子编写练习作业,手动编写速度慢,结果还要人工计算,容易出错不说,效率也很低。使用计算机可以高效出题,自动计算结果,并且没有错误。请编写一个程序,随机出20道100以内加法的计算题,然后输出为不带答案的加法题和带答案的加法题两个部分。如图所示:


示例代码如下:

import random  # 因为要随机产生加数 所以肯定要使用到random

# 注意: 一般来说我们所说的100以内的加法题是指的结果不超过100
# 这里笔者也硬性规定 加数不能=100 最多为99
# 因为每次进入循环express1和express2都会发生变化 所以要用一个空的字符串每次去拼接不同的表达式
# 这样最后就会把20个表达式都拼接在一起
str1 = ""
str2 = ""

for i in range(20):  # 循环20次 每次生成一道题
    num1 = random.randint(0, 99)  # 随机产生加数1
    num2 = random.randint(0, 99 - num1)  # 随机产生加数2
    result = num1 + num2  # 结果
    # 开始拼接字符串 因为有些加数是有些是2位 有些是1位 所以我们要进行对齐处理 最多2位 不足的以空白填充
    num1 = str(num1).ljust(2, " ")
    num2 = str(num2).ljust(2, " ")
    # 拼接不带答案的表达式: 74 + 20 =
    express1 = num1 + " + " + num2 + " = "
    # 拼接带答案的表达式: 74 + 20 = 94
    express2 = num1 + " + " + num2 + " = " + str(result)
    if i % 2 != 0:
        str1 += express1 + "\n"
        str2 += express2 + "\n"
    else:
        str1 += express1 + "\t"
        str2 += express2 + "\t"
with open("math.txt", "w", encoding="utf8") as file:
    file.write(str1)
with open("key.txt", "w", encoding="utf8") as file:
    file.write(str2)
print("\033[0;34m20道100以内加法题:")
print(str1)
print("20道以内加法题(带答案): ")
print(str2, end="")
print("\033[0m", end="")

2. 输出100以内减法题试卷

根据上面的加法出题程序,请编写一个减法出题程序。随机出20道100以内减法的计算题,计算结果不能出现负数。出题试卷分为不带答案和带答案两个部分,分别输出到屏幕和文件(math.txt和key.txt),如图所示。

 


示例代码如下:

import random 

str1 = ""
str2 = ""
for i in range(20):  # 循环20次 每次生成一道题
    num1 = random.randint(0, 99)  # 随机产生数1
    num2 = random.randint(0, 99 - num1)  # 随机产生数2
    # 因为结果不能出现负数 所以要进行判断
    if num1 < num2:
        num1, num2 = num2, num1
    result = num1 - num2  # 被减数num1始终为最大的那个数
    num1 = str(num1).ljust(2, " ")
    num2 = str(num2).ljust(2, " ")
    express1 = num1 + " - " + num2 + " = "
    express2 = num1 + " - " + num2 + " = " + str(result).ljust(2, " ")  # 这里的结果也进行了左对齐
    if i % 2 != 0:
        str1 += express1 + "\n"
        str2 += express2 + "\n"
    else:
        str1 += express1 + "\t"
        str2 += express2 + "\t"
with open("math.txt", "w", encoding="utf8") as file:
    file.write(str1)
with open("key.txt", "w", encoding="utf8") as file:
    file.write(str2)
print("\033[0;34m20道100以内减法题:")
print(str1)
print("20道以内减法题(带答案): ")
print(str2, end="")
print("\033[0m", end="")

3. 输出100以内加减法题试卷

根据以上的加法、减法出题程序,请编写一个`混合加减法出题程序。随机出20道100以内混合加减法的计算题。出题试卷分为不带答案和带答案两个部分,分别输出到屏幕和文件(math.txt和key.txt)。运行效果如图所示。

 


示例代码如下:

import random  

str1 = ""
str2 = ""
for i in range(20):  # 循环20次 每次生成一道题
    num1 = random.randint(0, 99)  # 随机产生数1
    num2 = random.randint(0, 99 - num1)  # 随机产生数2
    symbol = random.choice("+-")
    # 判断符号是加号 还是减号
    if symbol == "+":
        result = num1 + num2  # 是+号 做加法
    else:
        if num1 < num2:
            num1, num2 = num2, num1
        result = num1 - num2  # 否则做减法
    num1 = str(num1).ljust(2, " ")
    num2 = str(num2).ljust(2, " ")
    express1 = num1 + " " + symbol + " " + num2 + " = "
    express2 = num1 + " " + symbol + " " + num2 + " = " + str(result).ljust(2, " ")
    if i % 2 != 0:
        str1 += express1 + "\n"
        str2 += express2 + "\n"
    else:
        str1 += express1 + "\t"
        str2 += express2 + "\t"
with open("math.txt", "w", encoding="utf8") as file:
    file.write(str1)
with open("key.txt", "w", encoding="utf8") as file:
    file.write(str2)
print("\033[0;34m20道100以内加减法混合题试卷:")
print(str1)
print("20道100以内加减法混合题试卷(带答案): ")
print(str2, end="")
print("\033[0m", end="")



4. 输出乘数100以内的乘法题试卷

请编写一个输出乘数为100以内的乘法题试卷程序。出题数量由用户输入,出题试卷分为不带答案和带答案两个部分,分别输出到屏幕和文件(math.txt和key.txt)。运行效果如图所示。

 


示例代码如下:

import random  

str1 = ""
str2 = ""
num = int(input("请输入需要生成的题目数: 如(30): ").strip())
for i in range(num):  # 循环num次 每次生成一道题
    num1 = random.randint(0, 99)  # 随机产生乘数1
    num2 = random.randint(0, 99 - num1)  # 随机产生乘数2
    result = num1 * num2  # 结果
    num1 = str(num1).ljust(2, " ")
    num2 = str(num2).ljust(2, " ")
    express1 = num1 + " * " + num2 + " = "
    express2 = num1 + " * " + num2 + " = " + str(result).ljust(4, " ")  # 这里的结果也进行了左对齐
    if i % 2 != 0:
        str1 += express1 + "\n"
        str2 += express2 + "\n"
    else:
        str1 += express1 + "\t"
        str2 += express2 + "\t"
with open("math.txt", "w", encoding="utf8") as file:
    file.write(str1)
with open("key.txt", "w", encoding="utf8") as file:
    file.write(str2)
print(f"\033[0;34m{num}道100以内乘法题试卷:")
print(str1)
print(f"{num}道100以内乘法题试卷(带答案): ")
print(str2, end="")
print("\033[0m", end="")

5. 随机输出100以内除法题试卷

请编写一个输出被除数为100以内的除法题试卷程序。题目数量由用户输入,运算结果必须为整数。出题试卷分为不带答案和带答案两个部分,分别输出到屏幕和文件(math.txt和key.txt),运行效果如图所示。

 


示例代码如下:

import random  

str1 = ""
str2 = ""
num = int(input("请输入需要生成的题目数: 如(30): ").strip())
for i in range(num):  # 循环num次 每次生成一道题
    num1 = random.randint(1, 99)  # 随机产生被除数
    num2 = random.randint(1, 99 - num1)  # 随机产生除数2 注意除数不能为0
    # 因为要求最后结果必须是整数 所以要进行判断
    if num1 < num2:
        num1, num2 = num2, num1  # 被除数肯定要比除数大
    while num1 % num2 != 0:
        if num1 < 99:
            num1 += 1
        else:
            if num2 > 1:
                num2 -= 1
    result = num1 // num2  # 结果
    num1 = str(num1).ljust(2, " ")
    num2 = str(num2).ljust(2, " ")
    express1 = num1 + " ÷ " + num2 + " = "
    express2 = num1 + " ÷ " + num2 + " = " + str(result).ljust(2, " ")  # 这里的结果也进行了左对齐
    if i % 2 != 0:
        str1 += express1 + "\n"
        str2 += express2 + "\n"
    else:
        str1 += express1 + "\t"
        str2 += express2 + "\t"
with open("math.txt", "w", encoding="utf8") as file:
    file.write(str1)
with open("key.txt", "w", encoding="utf8") as file:
    file.write(str2)
print(f"\033[0;34m{num}道100以内除法题试卷:")
print(str1)
print(f"{num}道100以内除法题试卷(带答案): ")
print(str2, end="")
print("\033[0m", end="")

6. 随机输出100以内混合乘除法题

根据以上的乘法、除法出题程序,请编写一个混合乘除法出题程序。题目数量由用户输入,出题试卷分为不带答案和带答案两个部分,分别输出到屏幕和文件(math.txt和key.txt),运行效果如图所示。

 


示例代码如下:

import random

str1 = ""
str2 = ""
num = int(input("请输入需要生成的题目数: 如(30): ").strip())
for i in range(num):  # 循环num次 每次生成一道题
    num1 = random.randint(1, 99)  # 随机产生数1
    num2 = random.randint(1, 99 - num1)  # 因为有除数所以都从1开始
    symbol = random.choice("*÷")
    # 判断符号是* 还是÷号
    if symbol == "*":
        result = num1 * num2  # 是*号 做乘法
    else:
        if num1 < num2:
            num1, num2 = num2, num1
        while num1 % num2 != 0:
            if num1 < 99:
                num1 += 1
            else:
                if num2 > 1:
                    num2 -= 1
        result = num1 // num2  # 否则做除法
    num1 = str(num1).ljust(2, " ")
    num2 = str(num2).ljust(2, " ")
    express1 = num1 + " " + symbol + " " + num2 + " = "
    express2 = num1 + " " + symbol + " " + num2 + " = " + str(result).ljust(2, " ")
    if i % 2 != 0:
        str1 += express1 + "\n"
        str2 += express2 + "\n"
    else:
        str1 += express1 + "\t"
        str2 += express2 + "\t"
with open("math.txt", "w", encoding="utf8") as file:
    file.write(str1)
with open("key.txt", "w", encoding="utf8") as file:
    file.write(str2)
print("\033[0;34m20道100以内乘除法混合题试卷:")
print(str1)
print("20道100以内乘除法混合题试卷(带答案): ")
print(str2, end="")
print("\033[0m", end="")

7. 100以内加减法小测试

在计算机上也可以进行数学计算能力的测试,请编写一个程序,随时出题,随时验证答案。对100以内的加减法随机出题,一题一答,每题20分,答对加5分,答错不记分,总计5道题,共100分。答题结束给出测试分数,具体效果如下图所示。

更多教程已经代码点这里


示例代码如下:

import random

print("----------100以内加减法小测试----------\n")
score = 0  # 用来记录分数
msg = "当前"
for i in range(5):  #
    num1 = random.randint(0, 99)  # 随机产生数1
    num2 = random.randint(0, 99 - num1)  # 随机产生数2
    symbol = random.choice("+-")
    # 判断符号是加号 还是减号
    if symbol == "+":
        result = num1 + num2  # 是+号 做加法
    else:
        if num1 < num2:
            num1, num2 = num2, num1
        result = num1 - num2  # 否则做减法
    num1 = str(num1).ljust(2, " ")
    num2 = str(num2).ljust(2, " ")
    express1 = num1 + " " + symbol + " " + num2 + " = ?"
    print(f"第{i + 1}题: {express1}")
    answer = int(input("请输入你的答案: ").strip())
    msg = "最后" if i == 4 else msg
    if answer == result:
        score += 5
        print(f"你真棒!得5分奖励,{msg}得分:{score}\n")
    else:
        print(f"正确答案: {result} 加油! 本次没有得分,{msg}得分: {score}\n")

到此今天的小案例全部结束,小姨再也不用担心宝宝的学习啦,哈哈哈哈~。本次的练习总的来说还是非常简单的,由于笔者写了一天的代码,并且是在半夜完成这篇博文,所以文中可能会出现一些逻辑不严谨或者错误的问题,希望读者可以多多指教与谅解。通过这几天的小案例,读者希望大家能够对Python的基础语法能够有进一步的掌握。最后笔者半夜编写不易,希望大家可以多多支持。

此篇文章转载文,著作权归作者所有,如有侵权联系小编删除

原文地址:https://blog.csdn.net/xw1680/article/details/105336034