Python使用列表和字典实现简单的考试系统详解

 更新时间:2023年01月17日 09:25:23   作者:永远的麦田  
这篇文章主要介绍了Python使用列表和字典实现简单的考试系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

1 之前我们学习了列表,知道列表可以用来存储一组数据,可以增删改查,可以遍历

2 之前我们学习了字典,知道字典可以用来存储键值对,与列表类似,字典也可以进行增删改查,同样也可以遍历

这节课我们利用学到的这两种类型的数据结构做一个练习

需求

一个简单的考试系统:

这个系统有以下几个部分:

1)使用系统需要先登录,只有输入正确的用户名和密码才能进入,用户试错3次后系统退出

2)登录成功后,可以参加考试,试题内容是原先存储在机算机中的内容。

3)考试结束后会输出用户名和考试分数

分析

考试系统需要两样数据,一是用户信息,另一个是考试的题库

我们可以做简单一些,将所有用户的信息作为字典的值,用users表示字典的key,类似这样

"users": {"decheng": "123456", "zhuogan": "123456", "yangyang": "123456", "jiashun": "123456", "junze": "123456"}

然后将测试题作为字典的另一个值,用tests作为字典的key,如下:

"tests": ["36+5", "4+17", "13*9"] 

字典的key值和value都想好了,我们直接把这个字典定义出来:

data = {
    "users": {"decheng": "123456", "zhuogan": "123456", "yangyang": "123456", "jiashun": "123456", "junze": "123456"},
    "tests": ["36+5", "4+17", "13*9"]
}

实现

1登录

用户的登录比较简单,我们可以给用户设定一个试错次数,比如3次,当用户3次都输不对用户名和密码时,系统给出提示并退出,如果输入用户名和密码可以和之前的配置中的字典对应上,则提示用户将进行测试。

代码也比较简单

def login():
    for i in range(3):
        name = input("please input your name: ")
        pwd = input("please input your passwd: ")
        if name in data["users"] and data["users"][name] == pwd:
            print("{} will test......".format(name))
            return name
        else:
            print("username or passwd error!!!")
    print("system will exit......")
    return ""

如果用户登录成功,返回用户名,否则返回一个空字符串

2考试

做练习题这儿牵涉到一个非常重要的函数eval(),用来将表达式计算出来,比如"3+5"通过调用eval("3+5")我们可以知道这个表达式等于8

这样只需通过eval("3+5") == answer即可知道用户是否回答正确

代码如下:

def test():
    right = 0
    error = 0
    for item in data["tests"]:
        answer = input(item + "=")
        if int(answer) == eval(item):
            right += 1
        else:
            error += 1
    return error, right

程序先设定两个计数器,每做对一题right加1,每错一题,error加1

测试开始,程序遍历数组data["tests"]中的表达式,并将表达式计算出来的值与用户输入的答案比较,若相等则right加1,不想等error加1,当数组遍历完成,程序退出,返回做题正确数和错误数

3将整个系统串起来

整个系统分3部分,登录,考试,打印考试结果

有一点我们要注意,如果用户3次都没有登录成功,login()返回空字符串,系统需要退出,不能再进行考试。串起来的代码更简单,如下所示:

user_name = login()
if user_name:
    error, right = test()
    print("用户{}参加测试,一共{}道题,做对{}题,做错{}题".format(user_name, len(data["tests"]), right, error))

最后附上全部代码:

# -*- coding: utf-8 -*-
"""
funcs: 列表和字典的应用
考试系统:
1 用户登录,用户名,密码正确可登录
2 配置练习题
3 循环展示,等待用户输入答案
4 计算预期答案,给出评分
"""
data = {
    "users": {"decheng": "123456", "zhuogan": "123456", "yangyang": "123456", "jiashun": "123456",
              "junze": "123456"},
    "tests":
        ["36+5", "4+17", "13*9"]
}
def login():
    for i in range(3):
        name = input("please input your name: ")
        pwd = input("please input your passwd: ")
        if name in data["users"] and data["users"][name] == pwd:
            print("{} will test......".format(name))
            return name
        else:
            print("username or passwd error!!!")
    print("system will exit......")
    return ""
def test():
    right = 0
    error = 0
    for item in data["tests"]:
        answer = input(item + "=")
        if int(answer) == eval(item):
            right += 1
        else:
            error += 1
    return error, right
user_name = login()
if user_name:
    error, right = test()
    print("用户{}参加测试,一共{}道题,做对{}题,做错{}题".format(user_name, len(data["tests"]), right, error))

到此这篇关于Python使用列表和字典实现简单的考试系统详解的文章就介绍到这了,更多相关Python考试系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 通俗讲解Python中的五种下划线含义

    通俗讲解Python中的五种下划线含义

    在Python中,下划线(_)是特殊的,如果您是python程序员,对于for _ in range(10),以及__init__(self)的语法可能比较熟悉,这篇文章主要给大家介绍了关于Python中五种下划线的相关资料,需要的朋友可以参考下
    2021-10-10
  • 浅析python 中__name__ = ''__main__'' 的作用

    浅析python 中__name__ = ''__main__'' 的作用

    这篇文章主要介绍了python 中__name__ = '__main__' 的作用,对于初学者来说很有帮助,需要的朋友可以参考下
    2014-07-07
  • python中正则表达式 re.findall 用法

    python中正则表达式 re.findall 用法

    在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。本文重点给大家介绍python中正则表达式 re.findall 用法,感兴趣的朋友跟随小编一起看看吧
    2018-10-10
  • Python利用turtle库绘制彩虹代码示例

    Python利用turtle库绘制彩虹代码示例

    这篇文章主要介绍了Python利用turtle库绘制彩虹代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python之Web框架Django项目搭建全过程

    Python之Web框架Django项目搭建全过程

    这篇文章主要介绍了Python之Web框架Django项目搭建全过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Python使用smtplib库发送电子邮件

    Python使用smtplib库发送电子邮件

    Python提供了smtplib库,用于发送电子邮件,本文将详细介绍如何使用Python的smtplib库来发送电子邮件,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • 图文详解WinPE下安装Python

    图文详解WinPE下安装Python

    这篇文章主要以图文结合的方式详细介绍了WinPE下安装Python的具体实现步骤,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 使用Pycharm(Python工具)新建项目及创建Python文件的教程

    使用Pycharm(Python工具)新建项目及创建Python文件的教程

    这篇文章主要介绍了使用Pycharm(Python工具)新建项目及创建Python文件的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • python正则表达式查找和替换内容的实例详解

    python正则表达式查找和替换内容的实例详解

    在本篇文章里小编给大家整理的是一篇关于python正则表达式查找和替换内容的实例详解内容,有兴趣的朋友们可以跟着学习参考下。
    2021-10-10
  • Python实现查看系统启动项功能示例

    Python实现查看系统启动项功能示例

    这篇文章主要介绍了Python实现查看系统启动项功能,涉及Python针对系统注册表启动项的相关读取操作实现技巧,需要的朋友可以参考下
    2018-05-05

最新评论