小学数学老师经常要给小学生编写练习作业,手动编写速度慢,结果还要人工计算,容易出错不说,效率也很低。使用计算机可以高效出题,自动计算结果,并且没有错误。请编写一个程序,随机出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="")
根据上面的加法出题
程序,请编写一个减法出题
程序。随机出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="")
根据以上的加法、减法出题
程序,请编写一个`混合加减法出题程序。随机出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="")
请编写一个输出乘数为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="")
请编写一个输出被除数为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="")
根据以上的乘法、除法出题
程序,请编写一个混合乘除法出题
程序。题目数量由用户输入,出题试卷分为不带答案和带答案两个部分,分别输出到屏幕和文件(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="")
在计算机上也可以进行数学计算能力的测试,请编写一个程序,随时出题,随时验证答案。对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的基础语法
能够有进一步的掌握。最后笔者半夜编写不易,希望大家可以多多支持。