How to draw random numbers repeatedly so that the same number is not drawn?

Asked

Viewed 80 times

0

from random import randint

# Dados
lista_tentativas = list()
quantidade_tentativas  = 0

# Entrada de dados
x = int(input('Informe um numero entre 0 e 10:'))

# Tentativas
while True:
    y = randint(0,10)
    quantidade_tentativas += 1
    lista_tentativas.append(y)
    if y == x:
        print('O numero digitado foi {}')
        print(f'Essas foram todas as minhas tentativas: {lista_tentativas}')
        print(f'Essa foi a quantidade total de tentativas: {quantidade_tentativas} tentativas')
        break

The way I am doing there is the possibility of trying the same number. I want to remove this possibility. But how?

1 answer

3

Check if the number typed is in the try list. If so, ask/draw another number, before increasing the number of attempts:

while True:
    y = randint(0,10)
    if y in lista_tentativas:
        continue # ja existe, tenta outro numero
    quantidade_tentativas += 1
    lista_tentativas.append(y)
    if y == x:
        print('O numero digitado foi {}')
        print(f'Essas foram todas as minhas tentativas: {lista_tentativas}')
        print(f'Essa foi a quantidade total de tentativas: {quantidade_tentativas} tentativas')
        break
  • 2

    As your answer already contemplates what the AP asks, I’ll just leave the tip that lista_tentativas be a set() as it is an optimized data structure for cases like this. ;D

  • @fernandosavio agree, but I am finding it more didactic to leave the code of the answer as close as possible to that of the question, to facilitate the understanding

  • It was not a change suggestion, the answer is good. I left the comment for people to read after reading your reply, as an addition. :)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.