问题如下:“通过组合上面 3 个列表中的 4 个单词来创建密码。打印密码”在该问题中,组合意味着将单词连接在一起。我的代码打印在下面,但我很好奇如何优化它。我确信我不需要将密码列出来。请随意包含我可以做的任何其他优化。谢谢!import itertoolsimport randomnouns =[A large list of strings]verbs = [A large list of strings]adjs = [A large list of strings]# Make a four word password by combining words from the list of nouns, verbs and adjsoptions = list(itertools.chain(nouns, verbs, adjs))password = []for _ in range (4): password.append(options[random.randint(0,len(options)-1)]) password = "".join(password) print(password)
3 回答
![?](http://img1.sycdn.imooc.com/5333a2320001acdd02000200-100-100.jpg)
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
您的规范中似乎没有任何内容可以区分词性。因此,您只有一个用于密码目的的单词列表。
word_list = nouns + verbs + adjs
现在您只需从列表中随机选取四个项目即可。您应该random
再次查看文档。 sample
并且shuffle
在这里很有用。任何人都可以为您抢到 4 件物品。
pass_words = random.sample(word_list, 4)
或者
random.shuffle(word_list) pass_words = word_list[:4]
最后,简单地连接所选单词:
password = ''.join(pass_words)
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
慕斯709654
TA贡献1840条经验 获得超5个赞
很少有一个班轮。
选项1 :
print("".join(random.choice(nouns + verbs + adjs) for _ in range(4)))
选项-2:
print("".join(random.sample(nouns + verbs + adjs, 4)))
选项 3(如果您想要至少一项来自动词、名词和形容词的条目):
print("".join(random.sample([random.choice(nouns),random.choice(verbs),random.choice(adjs),random.choice(nouns + verbs + adjs)], 4)))
这样的衬里有很多,性能上略有差异。
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
四季花海
TA贡献1811条经验 获得超5个赞
您可以使用简单的加法来组合列表:
options = nouns + verbs + adjs
您可以使用random.choice()
从列表中选择随机项目:
for _ in range (4): password.append(random.choice(options))
添加回答
举报
0/150
提交
取消