簡體   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