python - 如何阻止同一个字母在列表中出现两次?

标签 python

我正在尝试编写一个程序,您可以在其中输入元音或辅音 8 次,然后显示您选择的字母列表。有没有办法对其进行编程,使同一个字母不会出现两次,例如,如果你选择元音并得到字母 a,那么字母 a 就不能再次随机选择? 这是目前的程序:

lt = 0
letters = []
while lt<8:
    letter = raw_input("Please enter v for a Vowel or c for a Consonant: ")
    if letter == "c":
        letters.append(random.choice(consonant)),
        lt = lt + 1
    elif letter == "v":
        letters.append(random.choice(vowel)),
        lt = lt + 1
    else:
        print("Please enter only v or c")

print ("letters:")
print letters

最佳答案

创建所有辅音和所有元音的列表,随机打乱它们,然后一次取一个元素:

import random

con = list('bcdfghjklmnpqrstvwxyz') # in some languages "y" is a vowel
vow = list('aeiou')
random.shuffle(con)
random.shuffle(vow)
# con is now: ['p', 'c', 'j', 'b', 'q', 'm', 'r', 'n', 'y', 'w', 'f', 'x', 't', 'g', 'l', 'd', 'k', 'h', 'z', 'v', 's'] or similar
# vow is now: ['e', 'u', 'i', 'a', 'o'] or similar

letters = []
while len(letters) < 8:
    letter = raw_input("Please enter v for a Vowel or c for a Consonant: ")
    if letter == "c":
        if con:
            letters.append(con.pop())
        else:
            print("No more consonnants left")
    elif letter == "v":
        if vow:
            letters.append(vow.pop())
        else:
            print("No more vowels left")
    else:
        print("Please enter only v or c")

关于python - 如何阻止同一个字母在列表中出现两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803074/

相关文章:

python - 检查扭曲的返回值是否为 Deferred

python - Flask 的 session 对象是字典还是对象?

python - boto3 aws 删除所有入站安全组规则

python - python中列表理解的补充

python - 如何保存Python网页抓取结果

python - 用于解析所有行的正则表达式以字母数字代码开头并以价格结尾

Python:斐波那契数列

python - 开发服务器上的 Django 媒体文件

python - Python 字典键中的空格

python - 我如何在python中添加一串数字