繁体   English   中英

从文件中导入随机单词而不重复Python

[英]importing random words from a file without duplicates Python

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

请在下面找到相关代码! -(ps FileSelection基本上是打开文件对话框)

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

WordList set

WordList = set()

然后update该集合,而不是追加:

WordList.update(set([RandWrd]))

当然, WordList对于集合来说是个坏名字。

但是,还有其他一些问题:

  • 不要对变量和函数使用大写名称(遵循PEP8
  • 如果您在循环中两次绘制相同的单词会怎样? 如果单词可能出现多次,则不能保证循环完成后WordList将包含10个项目。

可以通过将循环更改为来解决后者:

    while len(WordList) < 10:
        FileLines = open(FileSelection).read().splitlines()
        RandWrd = random.choice(FileLines)
        WordList.update(set([RandWrd]))

但是,您将不得不考虑根本不存在10个不同的单词的情况。

即使那样,循环仍然会非常低效,因为您可能会使用random.choice(FileLines)一遍random.choice(FileLines)绘制相同的单词。 但是也许您可以从中得出一些有用的信息。

不确定我是否理解正确,但是,第3行:“ if wrdcount”。 您在哪里给wrdcount一个值? 也许您打算沿着以下方向进行操作?:

wordset = {}
wrdcount = len(wordset)
while wrdcount < 10:
    # do some work to update the setcode here
    # when end-of-file break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM