Python 从奇数索引和偶数索引处的字符串生成随机字母

Python 从奇数索引和偶数索引处的字符串生成随机字母,python,python-3.x,Python,Python 3.x,两个字符串,如: import random consonants = "bcdfghjklmnprstvwz" vowels = "aeiou" 我想在偶数索引中得到四个字母,在奇数索引中得到三个字母,比如: ejiguka / agewilu / isavonu (odd indexes(0,2,4,6),even indexes(1,3,5,7)) 我试过这个函数,但不起作用 random_letter = random.choice(consonants[::2]) random_l

两个字符串,如:

import random
consonants = "bcdfghjklmnprstvwz"
vowels = "aeiou"
我想在偶数索引中得到四个字母,在奇数索引中得到三个字母,比如:

ejiguka / agewilu / isavonu (odd indexes(0,2,4,6),even indexes(1,3,5,7))
我试过这个函数,但不起作用

random_letter = random.choice(consonants[::2])
random_letter1 = random.choice(vowels[1::2])
random_together = random_letter + random_letter1

我得到了两个随机字母,如b和e,但我希望得到像ejiguka/Agewillu这样的输出。

您可以创建一个字母列表,并将它们连接在一起,如下所示:

str1 = ''.join(random.choice(consonants) if i % 2 else random.choice(vowels) for i in range(7))
您的代码只从每个列表中获得一个字母,并且只从切片的项目中获得

cons = (random.choice(consonants) for i in range(3))
vwls = (random.choice(vowels) for i in range(4))

''.join(next(cons) if i % 2 else next(vwls) for i in range(7))

你在正确的轨道上进行了拼接,但你没有正确地应用它

首先初始化空列表:

In [134]: x = [None] * 7
现在,使用random.sample检索唯一的随机字符子集,在拼接中指定:

In [135]: x[::2] = random.sample(vowels, 4)
     ...: x[1::2] = random.sample(consonants, 3)
加入并打印:

In [136]: ''.join(x)
Out[136]: 'ijepula' 

该代码的输出是什么?请用这些信息编辑您的问题,不要将其留在注释中。@user8016886您会发现random.sample更好的选择,它选择唯一的元素。看看我的回答有很多方法可以把它分成更多的行。我添加了一个编辑,可以更清楚地显示正在发生的事情。当然,如果你想的话,你可以拆分成更多。我厌倦了你的代码,我得到了重复的字母,比如:udurute,ebolafe。它们是随机的。只有5个表单可供选择,因此有些表单自然会出现多次。如何将输出转换为字符串?@user8016886 Look at.joinx