回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我设法创建了一个简单的随机字符串生成器,它可以打印一个随机的字母字符串,x次,列表中的每个迭代的随机长度在3-10个字符之间。我对Python还不熟悉,而且仍在学习一些基础知识,所以请耐心听我说。我的程序按预期工作,但我很确定我的代码可以优化。我真的很想学习最佳实践并扩展我的知识。这是我的第一篇文章。如果我来错了地方,我会道歉</p>
<pre><code>import random
class Randomize:
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
choice1 = random.choice(alphabet)
choice2 = random.choice(alphabet)
choice3 = random.choice(alphabet)
choice4 = random.choice(alphabet)
choice5 = random.choice(alphabet)
choice6 = random.choice(alphabet)
choice7 = random.choice(alphabet)
choice8 = random.choice(alphabet)
choice9 = random.choice(alphabet)
choice10 = random.choice(alphabet)
three_letters = choice1 + choice2 + choice3
four_letters = choice1 + choice2 + choice3 + choice4
five_letters = choice1 + choice2 + choice3 + choice4 + choice5
six_letters = choice1 + choice2 + choice3 + choice4 + choice5 + choice6
seven_letters = choice1 + choice2 + choice3 + choice4 + choice5 + choice6 + choice7
eight_letters = choice1 + choice2 + choice3 + choice4 + choice5 + choice6 + choice7 + choice8
nine_letters = choice1 + choice2 + choice3 + choice4 + choice5 + choice6 + choice7 + choice8 + choice9
ten_letters = choice1 + choice2 + choice3 + choice4 + choice5 + choice6 + choice7 + choice8 + choice9 + choice10
word_length = [three_letters, four_letters, five_letters, six_letters, seven_letters, eight_letters, nine_letters, ten_letters]
word = random.choice(word_length)
def gen(self):
for i in range(10):
print (Randomize.word)
Randomize.choice1 = random.choice(Randomize.alphabet)
Randomize.choice2 = random.choice(Randomize.alphabet)
Randomize.choice3 = random.choice(Randomize.alphabet)
Randomize.choice4 = random.choice(Randomize.alphabet)
Randomize.choice5 = random.choice(Randomize.alphabet)
Randomize.choice6 = random.choice(Randomize.alphabet)
Randomize.choice7 = random.choice(Randomize.alphabet)
Randomize.choice8 = random.choice(Randomize.alphabet)
Randomize.choice9 = random.choice(Randomize.alphabet)
Randomize.choice10 = random.choice(Randomize.alphabet)
Randomize.three_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3
Randomize.four_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3 + Randomize.choice4
Randomize.five_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3 + Randomize.choice4 + Randomize.choice5
Randomize.six_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3 + Randomize.choice4 + Randomize.choice5 + Randomize.choice6
Randomize.seven_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3 + Randomize.choice4 + Randomize.choice5 + Randomize.choice6 + Randomize.choice7
Randomize.eight_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3 + Randomize.choice4 + Randomize.choice5 + Randomize.choice6 + Randomize.choice7 + Randomize.choice8
Randomize.nine_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3 + Randomize.choice4 + Randomize.choice5 + Randomize.choice6 + Randomize.choice7 + Randomize.choice8 + Randomize.choice9
Randomize.ten_letters = Randomize.choice1 + Randomize.choice2 + Randomize.choice3 + Randomize.choice4 + Randomize.choice5 + Randomize.choice6 + Randomize.choice7 + Randomize.choice8 + Randomize.choice9 + Randomize.choice10
Randomize.word_length = [Randomize.three_letters, Randomize.four_letters, Randomize.five_letters, Randomize.six_letters, Randomize.seven_letters, Randomize.eight_letters, Randomize.nine_letters, Randomize.ten_letters]
Randomize.word = random.choice(Randomize.word_length)
name = Randomize()
name.gen()
print('Generated 10 names.')
</code></pre>
<p>编辑*</p>
<p>我发现我收到的一系列建议效果最好。这是一个比我第一次尝试要优越得多的新版本。使用.join和参数k设置每个字符串生成的长度对我来说是一个巨大的启示。谢谢</p>
<pre><code>import random
def gen():
ltrs = list('abcdefghijklmnopqrstuvwxyz')
word = "".join(random.choices(ltrs, k=random.randint(3,10)))
for i in range(1000):
print(word)
word = "".join(random.choices(ltrs, k=random.randint(3,10)))
gen()
</code></pre>