字段说明:xh-序号,lx-题目类型(1-单选,2-多选,3-判断),tm-题目内容, daA-daD为答案选项,da-正确答案。
要求:现要求生成一张模拟考试试卷(顺序按题目序号即可),用户可以进行答题,题与题之间有一条虚线分隔,题分数情况:单选与判断题每题正确1分,错误0分,多选题正确2分,少选1分,错误0分, 答题完成后点击统计,可以统计出总分数,正确数,错误数,部分正确数,未做题数,效果如下图所示 数据来源:考试数据库nj0on8表。


字段说明:xh-序号,lx-题目类型(1-单选,2-多选,3-判断),tm-题目内容, daA-daD为答案选项,da-正确答案。
要求:现要求生成一张模拟考试试卷(顺序按题目序号即可),用户可以进行答题,题与题之间有一条虚线分隔,题分数情况:单选与判断题每题正确1分,错误0分,多选题正确2分,少选1分,错误0分, 答题完成后点击统计,可以统计出总分数,正确数,错误数,部分正确数,未做题数,效果如下图所示 数据来源:考试数据库nj0on8表。


关注让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!```python import pandas as pd import random
exam_paper = pd.read_csv('nj0on8.csv') # 从考试数据库中读取试题 exam_paper = exam_paper.sort_values(by='xh') # 按题目序号排序 for index, row in exam_paper.iterrows(): print('{}. {}'.format(row['xh'], row['tm'])) if row['lx'] == 1 or row['lx'] == 3: print('A. {}\nB. {}\nC. {}\nD. {}'.format(row['daA'], row['daB'], row['daC'], row['daD'])) else: print('A. {}\nB. {}\nC. {}\nD. {}'.format(row['daA'], row['daB'], row['daC'], row['daD'])) print('-------------------------------')
user_answers = {} for index, row in exam_paper.iterrows(): answer = input('请输入您对题目{}的答案:'.format(row['xh'])) user_answers[row['xh']] = answer
total_score = 0 correct_count = 0 incorrect_count = 0 partial_correct_count = 0 unanswered_count = 0 for index, row in exam_paper.iterrows(): correct_answer = row['da']
if user_answers[row['xh']] == '':
unanswered_count += 1
elif user_answers[row['xh']] == correct_answer:
if row['lx'] == 1 or row['lx'] == 3:
total_score += 1
else:
total_score += 2
correct_count += 1
else:
if row['lx'] == 2:
if set(user_answers[row['xh']]) == set(correct_answer):
total_score += 1
partial_correct_count += 1
incorrect_count += 1
else:
incorrect_count += 1
print('总分数:{}'.format(total_score)) print('正确数:{}'.format(correct_count)) print('错误数:{}'.format(incorrect_count)) print('部分正确数:{}'.format(partial_correct_count)) print('未做题数:{}'.format(unanswered_count))