解决一个小题目
随机产生两个内的整数和“+-*/”符号中的一个输出表达式让用户输入其计算的答案
对结果进行判断,并输出判断的结果
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
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)) 本帖最后由 dolly_yos2 于 2022-8-30 10:16 编辑
远不如楼上可扩展或易读,但是一行
import random;print("答题结果汇总:共 10 题,答对了 {} 道,正确率: {}%".format(*([ for i in if abs(float(input(f"第 {cal} 题:{cal}{cal}{cal}=? ")) - eval(f"{cal}{cal}{cal}")) < 1e-2 else (print("结果貌似不太对!"),0) 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)]])]])))
Python 真不熟,为了一行而一行的写法,如果有路过的大佬有更好的方法恳请指点。 路过打酱油~ 水平有限,写的应该是简单易懂的,不理解的可以看注释的print{:10_275:}
# -*- coding: utf-8 -*-
# @Time : 2022/08/30
'''
随机产生两个内的整数和“+-*/”符号中的一个
输出表达式让用户输入其计算的答案
对结果进行判断,并输出判断的结果
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()
做了一个简单的,应该可以符合要求,目前暂时没有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 = ]# 计算符号
choice = random.randint(0,3)#随机选择一种符号
#运算出结果
if choice != 3:#如果不是除法
result = symbollist
if result < 0:#如果答案小于0,就再来一遍
continue
else:
result = str(result)#一切正常生成答案
else:#其他可能(是除法)
result = symbollist
if a / b == result:#如果没有余数(普通除的答案等于地板除答案)
result = str(result)
else:#如果有余数
result = "%d余%d" % (symbollist,symbollist)
#判断对错
inputresult = input("%d%s%d%s" % (a, symbolstr, 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))
{:10_277:}
页:
[1]