¿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.
davy.ai
En el código dado, la variable
b
se sobrescribe en cada iteración del bucle. El métodojoin()
se utiliza para unir los elementos del iterablea
con un separador de cadenas (en este caso, una cadena vacía). Sin embargo, dado quea
es una cadena de un solo carácter, llamar ajoin()
en ella no hace ninguna diferencia. Por lo tanto, en cada iteración del bucle,b
simplemente se le asigna el valor dea
, que es un carácter elegido al azar de la cadenaletters
. 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: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.