我知道如何从7到14中获取随机数字,但是是否可以在排除之前写好的某些数字的情况下,从7到14中获取随机数字呢?
例如:
Forbidden = [12, 13, 8, 7]
a = randint(7, 14)
a
应该是一个随机数,但不应该是 Forbidden
中列出的数字。
编辑:感谢建议,使用 while 循环或 .choice 实际上解决了我的问题。但最终 @user2357112 是正确的,显然黑名单想法是初学者的陷阱,洗牌一副牌解决了我的问题。
我知道如何从7到14中获取随机数字,但是是否可以在排除之前写好的某些数字的情况下,从7到14中获取随机数字呢?
例如:
Forbidden = [12, 13, 8, 7]
a = randint(7, 14)
a
应该是一个随机数,但不应该是 Forbidden
中列出的数字。
编辑:感谢建议,使用 while 循环或 .choice 实际上解决了我的问题。但最终 @user2357112 是正确的,显然黑名单想法是初学者的陷阱,洗牌一副牌解决了我的问题。
import random
deck = some_list
random.shuffle(deck)
# when you want to draw a card
card = deck.pop()
choice
函数:import random
total_data = [i for i in range(1,15)]
forbidden = [12, 13, 8, 7]
not_forbidden =[i for i in total_data if i not in forbidden] #make a list of not forbidden numbers
a = random.choice(not_forbidden) #select value which is between 7 and 14 and not in forbidden list
print(a)
import random
Forbidden = [12, 13, 8, 7]
def get_number(forbidden_list):
while True:
a = random.randint(7,14)
if a not in forbidden_list: #if this number if not forbidden list then break the loop and return the value
return a
result = get_number(Forbidden)
print(result)
random.choice()
:
import random
...
not_forbidden = [1,2,3,4]
a = random.choice(not_forbidden)
range()
这样的函数 :) - Gustavo Topetefrom random import randint
Forbidden = [12, 13, 8, 7]
a = randint(7, 14)
while a in Forbidden: a = randint(7, 14)
我知道在 randint
命令中你不能这样做,但你可以使用 while
循环来实现:
while a in forbidden:
a = randint(7, 14)