Python练习:百以内加减算术练习程序

'''设计一个程序,帮助小学生练习10以内的加法                                                           
    详情:
        - 随机生成加法题目;
        - 学生查看题目并输入答案;
        - 判别学生答题是否正确?
        - 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点)。
'''
import random

print('现在开始百以内加减练习。')
correct = 0
mistake = 0
while True:
    a = random.randint(1,100)
    b = random.randint(1,100)
    if a>40:
        #生成加法式
        cor_ans = a+b
        answer = input("{}+{}=".format(a,b))
    else:
        while b > a:
            # 防止减出负数
            b = random.randint(1, 100)
        #生成减法式
        cor_ans = a-b
        answer = input("{}-{}=".format(a,b))
    if int(answer) == cor_ans:
        print("答对了,你太棒了!(≧∀≦)ゞ")
        correct += 1
    else:
        print("答错了(╥﹏╥),正确答案应该是{},请再接再厉。".format(a+b))
        mistake += 1
    nex = input("要继续吗?如果要退出请输入'q',将统计做题数并退出。按回车将继续下一道题。")
    if nex == 'q':
        amount = correct + mistake
        correct_percent = round((correct/amount),2) * 100
        print('本次练习一共做了{}道题,正确率为{}%,欢迎下次使用。'.format(amount,correct_percent))
        break

二次改进将难度提高,原题只要十以内加法,现在的版本可以生成百以内加减算式。


2.20
今天学了正则表达式,给程序加入了输入格式检测,并且重构了代码。将生成算式和批改答案的代码分别装进了两个函数里。

# --coding:utf-8--
"""
设计一个程序,帮助小学生练习10以内的加法                                                           
    详情:
        - 随机生成加法题目;
        - 学生查看题目并输入答案;
        - 判别学生答题是否正确?
        - 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点)。
"""
import random
import re

correct = 0  # 做对的题数
mistake = 0  # 做错的题数


def random_generate(_min, _max):
    # 传入最大最小值,随机生成加法或减法式,返回问题与答案。
    a = random.randint(_min, _max)
    b = random.randint(_min, _max)
    if a > _max/2:
        # 生成减法式
        answer = a + b
        question = "{}+{}=".format(a, b)
    else:
        # 生成减法式
        while b >= a:
            # 防止减出负数
            b = random.randint(_min, _max)
        answer = a - b
        question = "{}-{}=".format(a, b)
    return question,answer


def check_answer(cor_answer, chec_answer):
    # 批改答案是否正确,返回True或False
    while re.match(r'\d+', chec_answer) is None:
        # 检测输入是否符合格式
        chec_answer = input('输入不合法,请重新输入:')
    if int(chec_answer) == cor_answer:
        print("答对了,你太棒了!(≧∀≦)ゞ")
        return True
    else:
        print("答错了(╥﹏╥),正确答案是{},请再接再厉。".format(cor_answer))
        return False


print('现在开始百以内加减练习。')
while True:
    # 开始练习循环
    question, answer = random_generate(0, 100)  # 生成一道区间在0到100的加法或减法式和答案
    pup_answer = input(question)  # 获取学生输入的答案
    if check_answer(answer, pup_answer):
        correct += 1
    else:
        mistake += 1
    nex = input("要继续吗?如果要退出请输入'q',将统计做题数并退出。按回车将继续下一道题。")
    if nex == 'q':
        # 退出循环,并统计练习数据输出。
        amount = correct + mistake
        correct_percent = round((correct/amount), 2) * 100
        print('本次练习一共做了{}道题,正确率为{}%,欢迎下次使用。'.format(amount, correct_percent))
        break

你可能感兴趣的:(Python练习实例)