我正在尝试制作一个小程序,将弄乱字母表中的字母(简单来说)
我尝试使用list.pop()
或list.remove()
之类的东西,但这些都没做
import random
def rand_let():
i = 26
alphabet = str('')
for a in range(1, 26):
key = ['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']
print(len(key))
print(key)
letter = random.randint(1, i)
print(key[letter])
letters = key[letter]
alphabet += str(letters)
key.remove(letter)
i -= 1
rand_let()
我希望它弄乱字母, 是的,但是这样做的方式会使字母重复(我不想重复)
答案 0 :(得分:1)
shuffle
中的random
函数将为您节省很多行,并且可以满足您的需求:
import random
alphabet = ['A', 'B', 'C']
random.shuffle(alphabet)
print(alphabet)
#Ex: ['C', 'A', 'B']
答案 1 :(得分:1)
得到重复项的原因是,尽管您具有从键列表中删除字母的代码,但声明键列表的行也位于循环内。尝试移动线
key = ['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']
for循环上方。或者,根据其他答案的建议,使用图书馆为您完成此任务。
答案 2 :(得分:0)
import random
import string
alphabet = [letter for letter in string.ascii_uppercase]
random.shuffle(alphabet)
print(alphabet)
答案 3 :(得分:0)
这只会随机排列列表,然后为for循环的每次迭代逐一打印列表的元素。
import random
key = ['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']
random.shuffle(key)
def choice(x):
for letter in key:
print()
choice(key)