1
resposta

[Dúvida] Problema com ciclo While

Boa tarde pessoal,

Criei um ciclo utilizando while e não consigo fazer com que ele se repita mais que 9 vezes. Eu gostaria que ele repetisse as instruções por 100 vezes, mas o código fica rodando de forma infinita e no output não sai nada. Não entendi o que está acontecendo. Segue o código:

import random 

Lista_ID = ['AB']

gerador = "ABC"

receptor = ""

while len(Lista_ID) < 9:

    for i in range (2):
        receptor += random.choice(gerador)     

        if receptor in Lista_ID:
            Lista_ID.remove(receptor)


    Lista_ID.append(receptor)

    receptor = ""

print (Lista_ID)
1 resposta

Oi Rafael,

Pelo que entendi do seu código, vc está tentando montar uma lista que guarda várias strings aleatórias que são montadas a partir de combinações dos valores dentro de gerador, é isso?

O seu gerador é curto demais, com 3 letras, vc pode apenas fazer 9 combinações diferentes de comprimento 2 que é o limitante do seu for interno.

gerador = 'ABC'
combinacoes_2_letras = ['AA', 'AB', 'AC', 'BA', 'BB', 'BC', 'CA', 'CB', 'CC']

Então para sua condição while len(Lista_ID) < 9, o código para, mas qualquer coisa mais que isso, é um loop infinito.

Aumente o número de letras no seu gerador para ter no mínimo o número de combinações que vc quer. Pelo que vi, o mínimo que vc precisa são 10 valores no seu gerador para ter 100 combinações de 2 letras.

gerador = "ABCDEFGHIJ"

Mas eu recomendo vc usar um gerador com mais de 10 valores pra conseguir ter as 100 combinações mais rápido.

Além disso, se vc quiser procurar, existe uma biblioteca chamada itertools que tem um método combinations_with_replacement que faz esse tipo de combinações. Depois dê uma olhada.