如何使随机数不重复?

问题描述 投票:0回答:1

我正在尝试创建一个游戏“STOP”,它会排序或绘制一个随机数,然后返回一个字母。字母表有 25 个字母,每个数字都是一个字母。

我希望每个字母都打印出来不再重复,并且随机选择不同的字母。

这是我的代码

import random

def let (ordem):
    if ordem == 0:
        return 'A'
    elif ordem == 1:
        return 'B'
    elif ordem == 2:
        return 'C'
    elif ordem == 3:
        return 'D'
    elif ordem == 4:
        return 'E'
    elif ordem == 5:
        return 'F'
    elif ordem == 6:
        return 'G'
    elif ordem == 7:
        return 'H'
    elif ordem == 8:
        return 'I'
    elif ordem == 9:
        return 'J'
    elif ordem == 10:
        return 'K'
    elif ordem == 11:
        return 'L'
    elif ordem == 12:
        return 'M'
    elif ordem == 13:
        return 'N'
    elif ordem == 14:
        return 'O'
    elif ordem == 15:
        return 'P'
    elif ordem == 16:
        return 'Q'
    elif ordem == 17:
        return 'R'
    elif ordem == 18:
        return 'S'
    elif ordem == 19:
        return 'T'
    elif ordem == 20:
        return 'U'
    elif ordem == 21:
        return 'V'
    elif ordem == 22:
        return 'W'
    elif ordem == 23:
        return 'X'
    elif ordem == 24:
        return 'Y'
    elif ordem == 25:
        return 'Z'
 
for l in range(1):
    ordem = random.randrange(25)
    abc = let(ordem)
    print(f'A letra sorteada foi *{abc}*')
python pygame repeat
1个回答
0
投票

为此,您有两种基本方法:

  • 记住你拉出的字母,或者
  • 记住你还没有拉出的字母

第二种方法更容易做到,特别是通过预先洗牌列表:

import string
import random

letters = list(string.ascii_uppercase)  # list of letters in alphabet order
random.shuffle(letters)                 # list of letters in random order
letters.pop()                           # the first random letter
letters.pop()                           # the next random letter 

每次弹出,字母列表都会缩小,因此您不能两次获得相同的字母。

© www.soinside.com 2019 - 2024. All rights reserved.