
Iván Cárdenas
PreguntaHola, tengo dos problemas. random.choice() no me funciona y devuelve la lista de caracteres completa. Además cuando ejecuto “”.join(contrasena) me sale el siguiente error:
TypeError: sequence item 0: expected str instance, list found
Alguien sabe que estoy haciendo mal?
Acá mi código
import random, string def generar_contrasena(): mayus= list(string.ascii_uppercase) minus= list(string.ascii_lowercase) simbols= list(string.punctuation) numbers = list(string.digits) character = [mayus+minus+simbols+numbers] contrasena= [] for i in range(15): character_random=random.choice(character) contrasena.append(character_random) contrasena="".join(contrasena) return contrasena def run(): contrasena=generar_contrasena() print('Tu nueva contraseña es:'+ contrasena) if __name__ == "__main__": run()```

Juan Manuel Fernandez Ceballos
Hola,
Cuando haces la "suma" o unión de elementos del mismo tipo el resultado va a ser un elemento nuevo del mismo tipo, es decir si "sumas" o unes elementos de tipo list el resultado va a ser un list.
El error se presenta por que python no puede encontrar un iterable para realizar el join, debido a que declaraste la variable character como lista y esto te va a dar como resultado no una lista si no una lista de lista, entonces al hacer esto:
python crea una lista con 1 solo elemento que es la union de tus listas
ejemplo:
pero al declarar la variable de la siguiente forma: