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)
因为你的文件中有空行,所以就出现了这些情况。解决方案有以下两个:
1.把文件中的空行全部都删除即可。
2.在代码汇总进行判断,将第五行代码改为:
questions = [x for x in data["题组一"].values if not pd.isnull(x)]
这样即可解决问题。
随机必然有重复!
所谓“不重复的随机”,实际上是洗牌。
【以下回答由 GPT 生成】
解决方案:
为了避免在使用tkinter
导入Excel时出现重复题目和NAN值,可以对代码进行一些修改和优化。
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)
pandas
库的fillna()
方法,将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值问题的具体方案。希望对你有帮助!如果还有其他问题,请随时提问。
【相关推荐】