首页 > 其他分享 >选择题部分的读取写入,以及重复进入的保证列表内数据不丢失的方法以及判断重复试题输入

选择题部分的读取写入,以及重复进入的保证列表内数据不丢失的方法以及判断重复试题输入

时间:2024-04-01 10:29:19浏览次数:15  
标签:file Multiple 读取 重复 list 选择题 choice questions append

1.思路讲解

1.1首先读取部分,我们事先准备好一个文件夹,在内部创建一个文件,注意文件名不可重复,我这边使用了datetime.date.today()来达到文件名始终为当前日期的方式,再利用os.path.exists(path)来判断文件路径是否存在,如若不存在就新建,存在就追加

1.2进行读取时,我们找到固定的规律,在其中找到周期即可读取到我们所需要的数据内容,读取完后再将读取到的四个选项以及题目答案存储在其列表内部即可,方便后续的判断题目是否重复出现.

1.3在进行判断重复的部分,需要注意的一个点就是,我们读取出来的数据内容时--------"1+1\n"而不是单纯的一串数据所以说我们要在用户输入完题目后再加上"\n"

1.4最后的写入部分,也就是较为简单的一部分了,将我们存储的数据以覆盖的方式写入到文件当中即可.

1.5上述只是大概描述,具体请看下面的代码情况,感谢大家.

import datetime
import os
# 以上是导入模块的一个部分,os模块来进行路径的判断,datetime主要进行一个时间的提取
mode = "w+"
# 默认文件打开模式为 "w+"
time = datetime.date.today()
choice_2_2 = 0
# 下列列表是用于题目,A选项,B选项,C选项,D选项,答案的保存工作,如命知其意
Multiple_choice_questions_list = []
Multiple_choice_questions_list_A = []
Multiple_choice_questions_list_B = []
Multiple_choice_questions_list_C = []
Multiple_choice_questions_list_D = []
Multiple_choice_questions_list_answer = []
Multiple_choice_questions_list_count = 0
# 此处的判断路径即是当路劲存在时我们就执行追加写入,如若不存在我们的默认mode值就是w+也就是新建覆盖写入。
if os.path.exists(f"E:\\测试系统\\{time}.选择题.text"):
    mode = "a+"
# 这里我们开始准备做一个读取之前文件的方法,让我们的列表中存储进之前的数据,以免造成重复试题的输入。
with open(f"E:\\测试系统\\{time}.选择题.text", mode, encoding="utf-8") as choice_file_1:
    # 回到第一行的操作
    choice_file_1.seek(0)
    choice_file_1_count = 0
    # 注意,此处i的用法是没有的,不必纠结i在何处使用。
    for i in range(len(choice_file_1.readlines())):
        choice_file_1.seek(0)
        # 此处执行加5的操作是因为周期的关系。
        # 下方执行各个列表的添加来达到避免重复试题的输入
        # 为何会反复出现choice_file_1.seek(0)这串代码呢,主要原因就是我们使用的是choice_file_1.readlines(),用完一次choice_file_1.readlines()后我们的鼠标光标会移到最后面,我们得让他移到第一行.
        if choice_file_1_count + 5 < len(choice_file_1.readlines()):
            choice_file_1.seek(0)
            Multiple_choice_questions_list.append(choice_file_1.readlines()[choice_file_1_count + 0])
            choice_file_1.seek(0)
            Multiple_choice_questions_list_A.append(choice_file_1.readlines()[choice_file_1_count + 1])
            choice_file_1.seek(0)
            Multiple_choice_questions_list_B.append(choice_file_1.readlines()[choice_file_1_count + 2])
            choice_file_1.seek(0)
            Multiple_choice_questions_list_C.append(choice_file_1.readlines()[choice_file_1_count + 3])
            choice_file_1.seek(0)
            Multiple_choice_questions_list_D.append(choice_file_1.readlines()[choice_file_1_count + 4])
            choice_file_1.seek(0)
            Multiple_choice_questions_list_answer.append(choice_file_1.readlines()[choice_file_1_count + 5])
            choice_file_1_count += 7
        else:
            pass
# 这里就到了我们的输入环节了,进行题目的判断重复的一个工作
dit_topic_1 = str(input("请输入题目:"))
# 此处加\n的原因是我们提取出来的值不是单纯的一串文字而是这种情况-------------"1+1\n"的形式.
dit_topic_2 = dit_topic_1 + "\n"
if dit_topic_2 in Multiple_choice_questions_list:
    print("该题目已存在")
# 此处题目不存在即可执行写入操作的第一步,也就是将我们所需要的值存储在ABCD四个列表中.
else:
    Multiple_choice_questions_A = input("请输入A选项:")
    Multiple_choice_questions_list_A.append(Multiple_choice_questions_A)
    Multiple_choice_questions_B = input("请输入B选项:")
    Multiple_choice_questions_list_B.append(Multiple_choice_questions_B)
    Multiple_choice_questions_C = input("请输入C选项:")
    Multiple_choice_questions_list_C.append(Multiple_choice_questions_C)
    Multiple_choice_questions_D = input("请输入D选项:")
    Multiple_choice_questions_list_D.append(Multiple_choice_questions_D)
    Multiple_choice_questions_answer = input("请输入正确选项:")
    Multiple_choice_questions_list_answer.append(Multiple_choice_questions_answer)

    # 执行选择题写入操作
    with open(f"E:\\测试系统\\{time}.选择题.text", mode, encoding="utf-8") as choice_file:
        # print(dit_topic_1)
        choice_file.write(dit_topic_1 + "\n")
        #                     print(Multiple_choice_questions_A)
        choice_file.write(Multiple_choice_questions_A + "\n")
        #                     print(Multiple_choice_questions_B)
        choice_file.write(Multiple_choice_questions_B + "\n")
        #                     print(Multiple_choice_questions_C)
        choice_file.write(Multiple_choice_questions_C + "\n")
        #                     print(Multiple_choice_questions_D)
        choice_file.write(Multiple_choice_questions_D + "\n")
        #                     print(Multiple_choice_questions_answer)
        choice_file.write(Multiple_choice_questions_answer + "\n")
        choice_file.write("---------------------------------" + "\n")

2.完结,晚上会更新选择题的答题部分,关注小作者不定时更新喔.

标签:file,Multiple,读取,重复,list,选择题,choice,questions,append
From: https://blog.csdn.net/2401_83316654/article/details/137222008

相关文章

  • 11天【代码随想录算法训练营34期】 第五章 栈与队列part02(● 20. 有效的括号 ● 1047
    20.有效的括号classSolution:defisValid(self,s:str)->bool:stk=[]upper=["(","{","["]lower=[")","}","]"]dictionary={")":"(&qu......
  • jFinal避免表单重复提交
    前言流程思路(同SpringMVC一样)sessionId:是Request.getSession().getId()获取session里面的idurl:是Request.getRequestURI()获取的网址的urlparams:是Request.getParameterMap()转的json字符串再转的String表单第一次提交数据:进入拦截器,从redis缓存中获取key(sessionId......
  • 使用Python清理重复音乐文件:一个简单的解决方案
    在日常生活中,我们经常会从各种渠道获取音乐资源,例如购买、下载或者从朋友那里借来。然而,有时候我们可能会发现自己的音乐库里存在着大量的重复音乐文件,这不仅浪费了存储空间,而且在听歌的时候也会带来不便。针对这个问题,我编写了一个简单的Python程序来帮助清理重复的音乐文件。为......
  • 每日一练 找无重复字符的最长子串
    我们来看下这个题目,我们要统计的是不重复的子串,我们可以使用“滑动窗口法”,其实我们很容易就能想到思路。我们的左窗代表我们目前遍历的开始,即我们遍历的子串的开头,右窗从左窗开始进行遍历,每次遍历都把当前的字符放入组内,遇到重复则退出计算此时的子串长度,接下来左窗加1继续......
  • LeetCode Python - 80. 删除有序数组中的重复项 II
    目录题目描述解法运行结果题目描述给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。说明:为什么返回......
  • AcWing 799. 最长连续不重复子序列
    原题链接:https://www.acwing.com/problem/content/801/题目分析用数组记录每个元素出现的次数,遍历以第i个元素为结尾的[i,j]区间的最长长度显然[i-1,j]必然达到最大,所以每次重复会发生在新增添的a[i]上,j右移直到到达i和暴力做法的区别就在于指针不会回退代码细节每次先把......
  • 客快物流大数据项目(九十三):ClickHouse的ReplacingMergeTree深入了解 ClickHouse清除重
    ​ClickHouse的ReplacingMergeTree深入了解为了解决MergeTree相同主键无法去重的问题,ClickHouse提供了ReplacingMergeTree引擎,用来对主键重复的数据进行去重。删除重复数据可以使用optimize命令手动执行,这个合并操作是在后台运行的,且无法预测具体的执行时间。在使用optimize命......
  • PHP关于随机打乱字符串函数str_shuffle会出现重复的问题
        某次在线上排查问题时发现,代码中使用的一个使用str_shuffle随机打乱字符串函数生成的唯一字符出现了重复,导致插入数据库失败。觉得很奇怪,生成随机字符串的方法如下:functionmakeString($len){$char='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS......
  • golang 读取文件内容,清空文件内容,把读取的内容写入到文件里
    packagemainimport( "encoding/json" "fmt" "io" "log" "os")typePvRelationListstruct{ Item[]PvRelationInfo`json:"item"`}typePvRelationInfostruct{ PodNamestring`json:"p......
  • 如何在Java中读取超过内存大小的文件
    读取文件内容,然后进行处理,在Java中我们通常利用Files类中的方法,将可以文件内容加载到内存,并流顺利地进行处理。但是,在一些场景下,我们需要处理的文件可能比我们机器所拥有的内存要大。此时,我们则需要采用另一种策略:部分读取它,并具有其他结构来仅编译所需的数据。接下来,我们就来......