basfan 发表于 2020-3-23 15:37

小学数学练习题

在家里,无聊给孩子写的一个python小程序,目的是练习加减法,乘除法因为孩子只会2和3的,所以只出2和3的题做,代码可根据需要自行任意修改

上代码:

import os
import random
import time

def add():
    os.system("cls")
    os.system("color 0a")
    a=random.randint(1,hard/2)
    b=random.randint(1,hard/2)
    global right_num
    answer=int(input('\n\n{}+{}='.format(a,b)))
    if answer==a+b:
      right_num+=1
      print('\n回答正确!' )
      time.sleep(1)
    else:
      print('\n回答错误!')
      time.sleep(1)

def minus():
    os.system("cls")
    os.system("color 0a")
    a=random.randint(1,hard)
    b=random.randint(1,hard)
    global right_num
    if(a<b):
      a,b=b,a
    answer=int(input('\n\n{}-{}='.format(a,b)))
    if answer==a-b:
      right_num+=1
      print('\n回答正确!')
      time.sleep(1)
    else:
      print('\n回答错误!')
      time.sleep(1)

def by():
    a=2
    b=random.randint(1,10)
    answer=int(input('\n\n{}×{}='.format(a,b)))
    global right_num
    if answer==a*b:
      right_num+=1
      print('\n回答正确!')
      time.sleep(1)
    else:
      print('\n回答错误!')
      time.sleep(1)

def divide():
    a=random.randint(2,20)
    b=2
    global right_num
    if(a<b):
      a,b=b,a
    while a%b!=0:
      a=random.randint(2,20)
      b=2
    answer=int(input('\n\n{}➗{}='.format(a,b)))
    if answer==a/b:
      right_num+=1
      print('\n回答正确!')
      time.sleep(1)
    else:
      print('\n回答错误!')
      time.sleep(1)

def caishuzi():
    os.system("cls")
    os.system("color 0a")
    num=random.randint(1,100)
    n=1
    print("我脑中有一个1到100之间的整数\n\n有本事猜猜我脑子里的数字是多少?\n\n猜猜我脑中的数字是多少?\n\n")
    while True:
      guess=int(input("猜猜看:"))
      if guess>100 and guess<0:
            print("都告诉你0到100的数了,你还能瞎猜!")
      if guess>num:
            print("你猜的数太大了\n")
            n+=1
      elif guess<num:
            print("你猜的数太小了\n")
            n+=1
      elif guess==num:
            if(n<8):
                print("你太聪明了!,猜了"+str(n)+"次居然就猜中了!")
                break
            elif(n<15 and n>8):
                print("你猜对了!一共猜了"+str(n)+"次,还算一般吧")
                break
            elif(n>15):
                print("真不容易,你居然还能猜对,你居然猜了"+str(n)+"次才能猜对")
                break
    print("所有游戏到此结束了,看电脑时间也不短了,休息一会吧!")
    input("")


right_num=0
mode=int(input('输入想进行练习的运算:\n1:加法\n2:减法\n3:乘法(仅包含2的乘法)\n4:除法(仅包含2的除法)\n请输入:'))
while mode<1 or mode>4:
    os.system("cls")
    mode=int(input('\n模式选择错误!请重新输入!\n\n输入想选择的运算\n1:加法\n2:减法\n3:乘法(仅包含2的乘法)\n4:除法(仅包含2的除法)\n请输入:'))


os.system("cls")
num=int(input('准备练习的次数:'))
while num<5 or num>50:
    os.system("cls")
    num=int(input('最少练习5次!最多练习50次,请重新输入!\n\n输入准备进行的练习次数:'))

os.system("cls")
if mode==1 or mode==2:
    hard=int(input("准备练习多少以内的加减法?"))
    while hard<20 or hard>200:
      hard=int(input("难度只能选择20以上,200以内的\n\n准备练习多少以内的加减法?"))


os.system("cls")
print("\n练习即将开始,请认真答题!")
time.sleep(2)
for i in range(num):
    if mode==1:
      os.system("cls")
      os.system("color 0a")
      print('\n\n第%d道题:' % (i+1))
      add()
    elif mode==2:
      os.system("cls")
      os.system("color 0a")
      print('\n\n第%d道题:' % (i+1))
      minus()
    elif mode==3:
      os.system("cls")
      os.system("color 0a")
      print('\n\n第%d道题:' % (i+1))
      by()
    elif mode==4:
      os.system("cls")
      os.system("color 0a")
      print('\n\n第%d道题:' % (i+1))
      divide()
      
time.sleep(1)      
print("\n\n本次总共练习了{}道题\n\n其中正确了{}道题\n\n正确率是{}%".format(num,right_num,right_num/num*100))
input()
time.sleep(2)
if right_num==num and num>=20:
    jl=int(input("\n\n哇塞!刚发现你居然考了满分!!!奖励关要不要玩一把?猜数字游戏哦!\n1、玩一把\n2、累了,不想玩了。\n请选择:"))
    if jl==1:
      caishuzi()
    else:
      print("真遗憾,再见啦!\n下次想玩,记得一定要考满分哦!")
      input()





运行时的图片:



成品:

basfan 发表于 2020-3-23 15:59

探玄珠 发表于 2020-3-23 15:53
我替小学生们谢谢你。

我是给我女儿写的,还没上1年级的女儿。。。。。。乘法口诀不全(故意的,因为她不会背),自己修改下代码可以补全。加减法倒是常用

孩子刚开始玩时候玩这个游戏,会很兴奋,但一段时间后就用不着这个了。因为...

我用扑克牌发明了一个新游戏:

经常跟孩子玩“五张牌”游戏(自己发明的):
摆出来5张牌,加减(不含乘除),谁凑够10就拿走,一张牌只能用一次,每一组放一摞,最后数数谁凑十的张数多谁赢(张数多就是可以让你用更多牌凑10,而不是简单的两个数加法,因为允许加减,孩子最高纪录五张牌凑够10,其实锻炼的就是连加连减和加减混合运算)

qianeymax6274 发表于 2020-3-23 15:38

我咋看不懂啊,难啊,

basfan 发表于 2020-3-23 15:44

qianeymax6274 发表于 2020-3-23 15:38
我咋看不懂啊,难啊,

倒不是多难,都是最基本的,我也是初学者,这是几个月前写的代码,我看很多人写的都比我强,我没系统学GUI界面呢,所以我写的代码一般没有图形界面。。。抱歉!

basfan 发表于 2020-3-23 15:48

刚才我自己又看了一下自己几个月前写的东西,突然发现写的好“青涩”,最主要的是不利于阅读,哈!抱歉,几个月前的东西,想拿来骗骗分,怕到时候再清理账号把我清理了{:1_936:}

qianeymax6274 发表于 2020-3-23 15:48

basfan 发表于 2020-3-23 15:44
倒不是多难,都是最基本的,我也是初学者,这是几个月前写的代码,我看很多人写的都比我强,我没系统学GU ...

你学啥专业的啊,亲

yks1985 发表于 2020-3-23 15:49

有点意思。。。随机生成

basfan 发表于 2020-3-23 15:50

qianeymax6274 发表于 2020-3-23 15:48
你学啥专业的啊,亲

我不好意思说我是学计算机的。但确实是真的!

hnwang 发表于 2020-3-23 15:51

感觉可以再完善下 加个界面 可以选择一次出5道或者10道题 就基本能满足日常需求了 楼主加油

探玄珠 发表于 2020-3-23 15:53

我替小学生们谢谢你。{:17_1068:}

qianeymax6274 发表于 2020-3-23 15:53

basfan 发表于 2020-3-23 15:50
我不好意思说我是学计算机的。但确实是真的!

我私信你了,私聊吧你微信多少, 我加你
页: [1] 2 3
查看完整版本: 小学数学练习题