【青少年编程】黄羽恒:加减乘除法小测试
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。
微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。
编程题
“加减乘除法小测试”是来自「青少年编程竞赛交流群」中 「黄羽恒」 小朋友的作品。
加减乘除法是小朋友们进行口算训练的必备技能。
首先,选择要测试多少组,每组包含四个题目,加减乘除法各一个。
其次,按照加法、减法、乘法、除法的顺序进行出题,其中减法结果必须为正数。
再次,回答正确,显示“恭喜你答对了!好棒",回答错误,显示"很遗憾答错了!呜呜"并给出正确的结果。
最后,给出本次小测试的分数,按照满分100计算。
1. 思路分析
这个题目相对简单,主要注意的有三点。
第一:进行除法计算的时候,分母不能为零,这块需要进行判断。
第二:为了保证每次测试的加减乘除法都不重复,需要用到随机数。
第三:输出结果用到print
语句,为了更好的交互体验需要配置print
语句中end
这个参数。
def print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False):
print()
函数,将objects
以字符串表示的方式格式化输出到流文件对象file
里。
将 objects
以字符串表示的方式格式化输出到流文件对象file
里。其中所有非关键字参数都按str()
方式进行转换为字符串输出;关键字参数 sep
是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;关键字参数 end
是输出结束时的字符,默认是换行符\n
;关键字参数 file
是定义流输出的文件,可以是标准的系统输出sys.stdout
,也可以重定义为别的文件;关键字参数 flush
是立即把内容输出到流文件,不作缓存。
2. 程序代码
import random
import time
questions = int(input('你要测试几组(1组4题、1加、1减、1乘、1除,除不净保留2位小数)题:'))
score = 100
diff = score / questions / 4
for i in range(questions):
time.sleep(1)
# 加法
addend1 = random.randint(0, 100)
addend2 = random.randint(0, 100)
sum_right = addend1 + addend2
print(addend1, '+', addend2, '=', end=' ')
sum_answer = int(input(''))
if sum_answer == sum_right:
print('恭喜你答对了! o(≧v≦)o~~好棒\n')
else:
print('很遗憾答错了! (╥﹏╥)~~呜呜')
print(addend1, '+', addend2, '=', sum_right, '\n')
score -= diff
time.sleep(1)
# 减法
while True:
minuend = random.randint(0, 100)
subtraction = random.randint(0, 100)
sum_right = minuend - subtraction
if sum_right >= 0:
break
print(minuend, '-', subtraction, '=', end=' ')
sum_answer = int(input(''))
if sum_answer == sum_right:
print('恭喜你答对了! o(≧v≦)o~~好棒\n')
else:
print('很遗憾答错了! (╥﹏╥)~~呜呜')
print(minuend, '-', subtraction, '=', sum_right, '\n')
score -= diff
time.sleep(1)
# 乘法
multiplier1 = random.randint(0, 20)
multiplier2 = random.randint(0, 10)
sum_right = multiplier1 * multiplier2
print(multiplier1, '×', multiplier2, '=', end=' ')
sum_answer = int(input(''))
if sum_answer == sum_right:
print('恭喜你答对了! o(≧v≦)o~~好棒\n')
else:
print('很遗憾答错了! (╥﹏╥)~~呜呜')
print(multiplier1, '×', multiplier2, '=', sum_right, '\n')
score -= diff
time.sleep(1)
# 除法
while True:
by_divisor = random.randint(0, 20)
divisor = random.randint(0, 10)
if divisor != 0:
break
sum_right = round(by_divisor / divisor, 2)
print(by_divisor, '÷', divisor, '=', end=' ')
sum_answer = float(input(''))
if sum_answer == sum_right:
print('恭喜你答对了! o(≧v≦)o~~好棒\n')
else:
print('很遗憾答错了! (╥﹏╥)~~呜呜')
print(by_divisor, '÷', divisor, '=', sum_right, '\n')
print()
score -= diff
time.sleep(1)
print('恭喜你得了', score, '分!')
3. 结果展示
(1)有关Python的群内答疑:
(2)关于Python练习的投稿: