tkinter随机出题内容重复

tkinter导入excel为什么我的随机出题会出现NAN,而且有的题会重复出现,有的题一直不出现

def start():
    global file, n, questions
    data = pd.read_excel(file)
    n = random.randint(0, len(data)-1)
    questions = data["题组一"].values.tolist()
    queslabel["text"] = questions[n],


quesButton=Button(windows,text="出题", command=start)
quesButton.place(x=200, y=280)

img


怎么让所有题不重复地都出现一次且不出现NAN

因为你的文件中有空行,所以就出现了这些情况。解决方案有以下两个:
1.把文件中的空行全部都删除即可。
2.在代码汇总进行判断,将第五行代码改为:

questions = [x for x in data["题组一"].values if not pd.isnull(x)]

这样即可解决问题。

随机必然有重复!
所谓“不重复的随机”,实际上是洗牌。

【以下回答由 GPT 生成】

解决方案:

为了避免在使用tkinter导入Excel时出现重复题目和NAN值,可以对代码进行一些修改和优化。

  1. 解决重复题目问题:
    • start()函数中,每次选择题目前,我们需要先检查之前已经出现的题目,以确保新的题目是唯一的。
    • 可以定义一个列表,用于存储已经出现过的题目的索引。
    • 每次选择题目前,可以使用一个while循环,不断生成新的随机数,直到得到一个之前未出现过的题目索引。
    • 在每次选择题目后,将该题目的索引加入到已出现题目列表中。
    • 当已出现题目列表的长度等于题目总数时,可以将已出现题目列表重新置为空,以重新开始出题。

下面是修改后的代码示例:

import pandas as pd
import random
from tkinter import *

def start():
    global file, n, questions, used_questions
    data = pd.read_excel(file)
    total_questions = len(data)

    # 检查题目索引是否在已出现题目列表中
    while True:
        n = random.randint(0, total_questions-1)
        if n not in used_questions:
            break

    questions = data["题组一"].values.tolist()
    queslabel["text"] = questions[n]

    # 将题目索引加入已出现题目列表
    used_questions.append(n)

    # 判断是否已经出完题目,若出完则清空已出现题目列表
    if len(used_questions) == total_questions:
        used_questions = []

used_questions = []  # 存储已出现题目的索引

quesButton = Button(windows, text="出题", command=start)
quesButton.place(x=200, y=280)
  1. 解决NAN值问题:
    • 在导入Excel文件时,使用pandas库的fillna()方法,将Excel表格中的NAN值填充为指定值或空字符串。
    • 在读取Excel数据时,可以将NAN值填充为一个合适的值,比如空字符串 ''

下面是修改后的代码示例:

import pandas as pd
import random
from tkinter import *

def start():
    global file, n, questions, used_questions
    data = pd.read_excel(file).fillna('')  # 填充NAN值为空字符串
    total_questions = len(data)

    # 检查题目索引是否在已出现题目列表中
    while True:
        n = random.randint(0, total_questions-1)
        if n not in used_questions:
            break

    questions = data["题组一"].values.tolist()
    queslabel["text"] = questions[n]

    # 将题目索引加入已出现题目列表
    used_questions.append(n)

    # 判断是否已经出完题目,若出完则清空已出现题目列表
    if len(used_questions) == total_questions:
        used_questions = []

used_questions = []  # 存储已出现题目的索引

quesButton = Button(windows, text="出题", command=start)
quesButton.place(x=200, y=280)

以上就是解决重复题目和NAN值问题的具体方案。希望对你有帮助!如果还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^