带有 random.randint 的随机整数,没有特定数字

TNT*_*tor 0 python

我正在尝试生成一个随机数。

import random
print(random.randint(1,10))
Run Code Online (Sandbox Code Playgroud)

我是否能够生成 1-10 之间的数字但不生成 x?

例如 x = 3

Sha*_*ger 5

三种方法:

  1. 循环直到有效:

    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)
  2. 从较小的范围生成,然后增加所有等于或大于排除值的数字:

    val = random.randint(1, 9)
    if val >= 3:
        val += 1
    print(val)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建一个您允许的数字序列,并使用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)