我有一个字符串,它有一些字符,我需要生成一个随机的大写字符,这在我的字符串中找不到。
实施例: str =“SABXT” 随机字符可以是不在str
中的任何字符我试过了:
string.letters = "SABXT"
random.choice(string.letters)
但这恰恰相反,它从我的str
生成了char答案 0 :(得分:3)
获取字符串中没有的字符列表,然后使用random.choice
返回其中一个字符。
import string
import random
p = list(set(string.ascii_uppercase) - set('SAXBT'))
c = random.choice(p)
当然,后续的random.choice
可能看起来多余,因为set
会对订单进行洗牌,但您无法真正依赖于随机性的设置顺序。
答案 1 :(得分:1)
import string,random
prohibitted = "SABXT"
print random.choice(list(set(string.ascii_uppercase)-set(prohibitted)))
是单向的。
另一个可能是:
import string,random
prohibitted = "SABXT"
my_choice = random.randint(0,26)
while char(ord('A')+my_choice) in prohibitted:
my_choice = random.randint(0,26)
print char(ord('A')+my_choice)
另一种方式可能是:
import string,random
my_choice = random.choice(string.ascii_uppercase)
while my_choice in prohibitted:
my_choice = random.choice(string.ascii_uppercase)