python - 从文件中选择随机单词而不重复Python(集合)

标签 python random set syntax-error text-files

我正在尝试创建一个程序,该程序从包含10个以上单词的文本文件中选择10个单词。出于程序目的,从文本文件导入这10个单词时,我不能两次导入相同的单词!目前,我正在为此使用一个集合,但是遇到语法错误。我对集合有一定的了解,知道它们不能两次拥有相同的值。到目前为止,我对如何解决此问题一无所知,将不胜感激。谢谢!

相对代码:(FileSelection)=打开文件对话框

def GameStage03_E():
    global WordSet
    if WrdCount >= 10:
        WordSet = set()
        for n in range(0,10):
            FileLines = open(FileSelection).read().splitlines()
            RandWrd = random.choice(FileLines)
            WordSet.update(set([RandWrd]))
        SelectButton.destroy()
        GameStage01Button.destroy()
        GameStage04_E()
    elif WrdCount <= 10:
        tkinter.messagebox.showinfo("ERROR", " Insufficient Amount Of Words Within Your Text File! ")

错误代码:
File "C:\Python34\lib\random.py", line 256, in choice
return seq[i]
`TypeError: 'set' object does not support indexing`

最佳答案

您可以只使用random.sample(2/3),所以您不必自己这样做。您也不需要调用list bigblind的答案提示,因为random.sample可以将集合作为参数:

WordSet.update(random.sample(FileLines, 10))

这样,您可以使用以下方法替换该函数的整个主体:
try:
    WordSet.update(random.sample(FileLines, 10))
except ValueError:
    stkinter.messagebox.showinfo("ERROR", "The text file doesn't have enough words!")

我还省略了不需要的global语句。仅在为变量分配新值时才需要,但是您需要做的就是调用其函数之一update

关于python - 从文件中选择随机单词而不重复Python(集合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34600562/

相关文章:

python - 可选择将参数传递给 python 中的子进程

java - 随机选择2个定义的数字

Unix命令查找字符串集交集或异常值?

python - 在管理命令中保存 Django 数据库中的图像

python - 用 0 填充和对齐向量

python - 如何改变随机数生成器在列表中移动时的概率?

python - 删除集合中已经存在于另一个元组中的元组对

php - __set() 方法回显属性值两次

python - Plotly hoverinfo 显示所有数据点而不是当前点

c# - 如何生成一定范围内的随机 BigInteger?