es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué solo imprime un carácter (Python)?

¿Por qué solo imprime un carácter?

import random
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890?!*-_.,'
b = ''
for i in range(10):
  a = (random.choice(letters))
  b = "".join(a)
print(b)

Este es un ejemplo de lo que obtengo:

R

No estoy tratando de hacer un generador de contraseñas muy bueno y seguro para uso comercial, es más sobre el concepto y el aprendizaje.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En el código dado, la variable b se sobrescribe en cada iteración del bucle. El método join() se utiliza para unir los elementos del iterable a con un separador de cadenas (en este caso, una cadena vacía). Sin embargo, dado que a es una cadena de un solo carácter, llamar a join() en ella no hace ninguna diferencia. Por lo tanto, en cada iteración del bucle, b simplemente se le asigna el valor de a, que es un carácter elegido al azar de la cadena letters. Al final del bucle, b contendrá el último carácter que fue seleccionado aleatoriamente.

    Para obtener una secuencia de 10 caracteres aleatorios, debes agregar cada carácter elegido al azar a b en cada iteración del bucle, de la siguiente manera:

    import random
    
    letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890?!*-_.,'
    b = ''
    for i in range(10):
        a = random.choice(letters)
        b += a
    
    print(b)
    

    De esta manera, cada carácter elegido al azar se agrega al final de b, lo que resulta en una secuencia de 10 caracteres elegidos aleatoriamente.

Comments are closed.