鱼C论坛

 找回密码
 立即注册
查看: 2401|回复: 5

[已解决]解决一个小题目

[复制链接]
发表于 2022-8-30 09:31:31 | 显示全部楼层 |阅读模式
50鱼币
随机产生两个[1,10]内的整数和“+-*/”符号中的一个
输出表达式让用户输入其计算的答案
对结果进行判断,并输出判断的结果

10道题做完后为用户统计并显示答题的结果。

提示:关于随机数
import random
random.randint(1, 9)
random.random( )  0-1之间的数,不含1

案例格式如下:

第 1 题:7*4=?28
你答对了!
第 2 题:9-5=?4
你答对了!
第 3 题:

10/9=?1.3
结果貌似不太对!

......

第 10题:

10+9=?19

你答对了!

答题结果汇总:共10题,答对了9道,正确率:90%
最佳答案
2022-8-30 09:31:32
import random

questionSize = 10
symbolStr = "+-*/"
count = 0
for i in range(1,questionSize+1):
    num1 = random.randint(1,10)
    num2 = random.randint(1,10)
    symbol = random.choice(symbolStr)
    exec("result=float(%d%s%d)" %(num1,symbol,num2))

    inputResult = float(input("第%d题:%d%s%d=?" %(i,num1,symbol,num2)))
    if inputResult == result:
        print("你答对了!")
        count += 1
    else:
        print("结果貌似不太对!")

print("答题结果汇总:共%d题,答对了%d道,正确率:%d%%" %(questionSize,count,count/questionSize*100))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-30 09:31:32 | 显示全部楼层    本楼为最佳答案   
import random

questionSize = 10
symbolStr = "+-*/"
count = 0
for i in range(1,questionSize+1):
    num1 = random.randint(1,10)
    num2 = random.randint(1,10)
    symbol = random.choice(symbolStr)
    exec("result=float(%d%s%d)" %(num1,symbol,num2))

    inputResult = float(input("第%d题:%d%s%d=?" %(i,num1,symbol,num2)))
    if inputResult == result:
        print("你答对了!")
        count += 1
    else:
        print("结果貌似不太对!")

print("答题结果汇总:共%d题,答对了%d道,正确率:%d%%" %(questionSize,count,count/questionSize*100))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-30 10:13:22 | 显示全部楼层
本帖最后由 dolly_yos2 于 2022-8-30 10:16 编辑

远不如楼上可扩展或易读,但是一行
import random;print("答题结果汇总:共 10 题,答对了 {} 道,正确率: {}%".format(*([[i, i * 10] for i in [sum([(print("你答对了!"),1)[1] if abs(float(input(f"第 {cal[0]} 题:{cal[1]}{cal[2]}{cal[3]}=? ")) - eval(f"{cal[1]}{cal[2]}{cal[3]}")) < 1e-2 else (print("结果貌似不太对!"),0)[1] for cal in [(i+1,random.randint(1,10),'+' if random.randint(1,4) == 1 else '-' if random.randint(1,3) == 1 else '*' if random.randint(1,2) == 1 else '/', random.randint(1, 10)) for i in range(10)]])]][0])))
Python 真不熟,为了一行而一行的写法,如果有路过的大佬有更好的方法恳请指点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-30 10:29:19 | 显示全部楼层
路过打酱油~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-30 11:14:14 | 显示全部楼层
水平有限,写的应该是简单易懂的,不理解的可以看注释的print
# -*- coding: utf-8 -*-
# @Time : 2022/08/30

'''
随机产生两个[1,10]内的整数和“+-*/”符号中的一个
输出表达式让用户输入其计算的答案
对结果进行判断,并输出判断的结果
10道题做完后为用户统计并显示答题的结果。
提示:关于随机数
import random
random.randint(1, 9)
random.random( )  0-1之间的数,不含1
案例格式如下:
第 1 题:7*4=?28
你答对了!
第 2 题:9-5=?4
你答对了!
第 3 题:
10/9=?1.3
结果貌似不太对!
......
第 10题:
10+9=?19
你答对了!
答题结果汇总:共10题,答对了9道,正确率:90%
'''
import random
def main():
    count_right=0
    count_error=0
    for i in range(10):
        # print('进入10次循环')
        ########################################################
        # print('获取两个随机整数数和一个符号')
        num1 = random.randint(1, 9)
        num2 = random.randint(1, 9)
        list_1 = ['+',
                  '-',
                  '*',
                  '/'
                  ]
        fuhao = random.choice(list_1)
        ########################################################
        # print('进行运算处理')
        if fuhao =='+':
            # print('进行+处理')
            jieguo=num1+num2
            shuru=input(f'第{i+1}题:\n{num1}+{num2}=')
            if shuru !='':
                if int(shuru) ==jieguo:
                    count_right=count_right+1
                    print('你答对了!')

                else:
                    count_error = count_error+1
                    print('结果貌似不太对!')
            else:
                count_error = count_error + 1
                print('结果貌似不太对!')
        ######################################
        elif fuhao =='-':
            # print('进行-处理')
            jieguo = num1 - num2
            shuru = input(f'第{i+1}题:\n{num1}-{num2}=')
            if shuru !='':
                if int(shuru) == jieguo:
                    count_right = count_right + 1
                    print('你答对了!')

                else:
                    count_error = count_error + 1
                    print('结果貌似不太对!')
            else:
                count_error = count_error + 1
                print('结果貌似不太对!')
        ######################################
        elif fuhao == '*':
            # print('进行*处理')
            jieguo = num1 * num2
            shuru = input(f'第{i+1}题:\n{num1}*{num2}=')
            if shuru !='':
                if int(shuru) ==jieguo:
                    count_right = count_right + 1
                    print('你答对了!')

                else:
                    count_error = count_error + 1
                    print('结果貌似不太对!')
            else:
                count_error = count_error + 1
                print('结果貌似不太对!')
        ######################################
        elif fuhao == '/':
            # print('进行/处理,保留两位小数')
            jieguo = round(num1/num2,2)
            shuru = input(f'第{i+1}题:\n{num1}/{num2}=')
            if shuru !='':
                if float(shuru) == jieguo:
                    count_right = count_right + 1
                    print('你答对了!')

                else:
                    count_error = count_error + 1
                    print('结果貌似不太对!')
            else:
                count_error = count_error + 1
                print('结果貌似不太对!')


        ########################################################
    # print(f'正确次数为:{count_right}')
    # print(f'错误次数为:{count_error}')
    print(f'答题结果汇总:共10题,答对了{count_right}道,正确率:{count_right/10:.2%}')


if __name__ == '__main__':
      main()

评分

参与人数 2荣誉 +5 鱼币 +5 贡献 +3 收起 理由
cjjJasonchen + 1 厉害捏
wy521@ + 4 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-30 13:03:38 | 显示全部楼层
做了一个简单的,应该可以符合要求,目前暂时没有bug
加法减法不会出现负数
除法为整数除法,答案为:“1” 或 “1余2” 这样的
import time
import random

countT = 0 #答对题的数量
count = 0 #答了多少题
symbolstr = ["+","-","×","÷"]#显示的符号
questionsize = 10#生成多少道题

print("计时开始!")
timestart = time.time()#开始计时


while questionsize > 0:

    a = random.randint(1,9)#a数字的范围,生成数字a
    b = random.randint(1,9)#b数字的范围,生成数字b
    symbollist = [a + b, a - b, a * b, [a // b,a % b]]  # 计算符号


    choice = random.randint(0,3)#随机选择一种符号

    #运算出结果
    if choice != 3:#如果不是除法
        result = symbollist[choice]
        if result < 0:#如果答案小于0,就再来一遍
            continue
        else:
            result = str(result)#一切正常生成答案
    else:#其他可能(是除法)
        result = symbollist[3][0]
        if a / b == result:#如果没有余数(普通除的答案等于地板除答案)
            result = str(result)
        else:#如果有余数
            result = "%d余%d" % (symbollist[3][0],symbollist[3][1])

    #判断对错
    inputresult = input("%d%s%d%s" % (a, symbolstr[choice], b,"="))#输入答案
    if inputresult == result:#答对啦
        print("你答对了!")
        countT += 1
    else:#答错啦,显示答案
        print("结果貌似不太对!")
        print("答案是:",result)

    count += 1#做的题数量加一
    questionsize -= 1 #计数器减一

timeend = time.time()#计时结束
print("计时结束!")

#答题汇总
print("答题结果汇总:共%d题,答对了%d道,正确率:%d%%" % (count,countT,countT/count*100))
print("     总共用时:%.2f秒,平均每题%.2f秒" % (timeend - timestart,(timeend - timestart)/count))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 16:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表