我正在尝试生成一个随机数。
import random
print(random.randint(1,10))
Run Code Online (Sandbox Code Playgroud)
我是否能够生成 1-10 之间的数字但不生成 x?
例如 x = 3
三种方法:
循环直到有效:
while (val := random.randint(1, 10)) == 3: # Python 3.8+, pre-3.8 is more verbose
pass
print(val)
Run Code Online (Sandbox Code Playgroud)
从较小的范围生成,然后增加所有等于或大于排除值的数字:
val = random.randint(1, 9)
if val >= 3:
val += 1
print(val)
Run Code Online (Sandbox Code Playgroud)
创建一个您允许的数字序列,并使用random.choice(如果您多次这样做,这可能是最好的解决方案;创建一次序列,然后重复使用它):
# Done once (must convert back to sequence from set, choice only works with sequences)
values = tuple(set(range(1, 11)) - {3})
# Done as often as you like
print(random.choice(values))
Run Code Online (Sandbox Code Playgroud)