【问题标题】:Generating a random permutation of a list生成列表的随机排列
【发布时间】:2016-07-15 14:46:13
【问题描述】:

我正在尝试制作“终端破解”游戏,但我被困在某个地方。
这是我的代码目前的样子:

import random

candidateWords = ['AETHER', 'BADGED', 'BALDER', 'BANDED', 'BANTER', 'BARBER'] #etc, etc

def wordlist():
    for index, item in enumerate(random.sample(list(candidateWords), 8)):
        print(index, ") ", item,  sep='')           
one = random.choice(candidateWords)
print(one)  

print("Welcome to the Guess-The-Word Game.\nThe Password is one of these words:")

我正在尝试制作一个包含 8 个单词的列表并枚举它,以便为每个单词提供一个数字。然后,从这8个词中,我需要随机选择一个词作为答案,但我不知道怎么做。

我想使用random.sample()random.choice()

【问题讨论】:

  • 注意:我忘记从 wordlist() 中取出 (word)。请忽略:)和“one = random.choice(candidateWords) print(one)”部分完全是我对做我想做的事的猜测。它不起作用

标签: python python-3.x random shuffle


【解决方案1】:

random.sample()的第二个参数应该是 其余的代码似乎没问题。

import random

candidateWords = ['AETHER', 'BADGED', 'BALDER', 'BANDED', 'BANTER', 'BARBER']

candidateWordsShuffled = random.sample(candidateWords, min(len(candidateWords), 8))


def wordlist():
    for index, item in enumerate(candidateWordsShuffled):
        print(index, ") ", item, sep='')

one = random.choice(candidateWordsShuffled)
print(one)

print("Welcome to the Guess-The-Word Game.\nThe Password is one of these words:")
wordlist()

【讨论】:

  • 感谢您的回复,但现在它似乎只打印一个选择的单词而不是其他 8 个单词。(因为我需要打印 8 个随机单词 + 8 个中选择的 1 个单词词。)
  • 嗯,wordlist() 函数不是打印随机列表吗?
  • 哦,对不起,我忘记在最后粘贴 wordlist()。但它显示了“candidateWords”中的 100 个单词你知道如何从中得到 8 个单词吗?(我在 for 循环中输入 8 吗?
  • 只需将len(candidateWords) 替换为8
  • 谢谢,代码现在显示 8 个单词,但 random.choice 是从原始“candidateWords”列表中选择一个单词,而不是从 8 个单词中选择。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多