Forum >> Principianti >> Accorpare una lista

Pagina: 1

Buongiorno cari :)




Alla realizzazione di un esercizio di generazione casuale di una password, ho incontrato il seguente "errore" (se così lo si può chiamare). Anzi, più che errore è un output obsoleto dal punto di visto visivo.
Input=""
while(Input!="exit"):
    Input=input("Press enter to generate a password, else type 'exit'. ")
    nc=["q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m", "è", "é", "ò", "à", "ù", "ì"]
    numbers=["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
    password=""
    password_n=""
    password+=str(sample(nc, 6))
    password_n+=str(sample(numbers, 2))
    password=password+password_n
    print(password)





output (random, ma la struttura è questa): ['r', 'è', 'h', 'j', 'y', 'e']['3', '0']Si può capire che è abbastanza bruttino da vedere. Ho provato ad usare comandi tali join, map e altro ma non riesco a renderlo una semplice stringa, tipo "rèhjye30".Vi ringrazio infinitamente sin da adesso!


--- Ultima modifica di Gien in data 2017-12-16 17:55:04 ---
Ciao caro, non faccio nessuna considerazione sul tuo codice, stai facendo esperimenti ed è giusto che taccia. :quiet:

Quello che fa al tuo caso è proprio join(), puoi usare anche con altri strumenti come set() per evitare duplicati. Devi trovarti nella condizione di avere due liste, se le sommi otterrai un'unica lista ed a quel punto join() ti risolve tutto.
>>> l1 = ['r', 'j', '0', 'y', 'h', 'è', 'e']
>>> l2 = ['3', '0']
>>> l3 = l1 + l2
>>> pwd = "".join(l3)
>>> print(pwd)
'rj0yhèe30'
Ti consiglio di non usare lettere accentate nelle password.

Non dico altro, fammi sapere come va.
Cya
Ciao caro, grazie intanto della risposta ;)

Avevo effettivamente pensato anche io alla classica somma di liste per renderle un'unica, tuttavia avendo fatto il tuo stesso procedimento l'output non varia. Il codice lo trovi sempre sopra, il lieve cambiamento è quello che mi hai consigliato;
password+=str(sample(nc, 6))
password_n+=str(sample(numbers, 2))
pswd=password+password_n
pswd=''.join(password_end)
print(pswd)





--- Ultima modifica di Gien in data 2017-12-17 20:12:55 ---
Nuovamente ciao, ti do qualche indizio:
1. Cosa fai quando dichiari password="" o password_n=""?
2. Ed invece come si aggiungono valori ad una lista?
3. In realtà cosa fa il tuo join()?
4. Esattamente cosa richiami con password_end visto che non compare in precedenza?

Cya
Allora, sono riuscito finalmente! Per quanto riguarda i tuoi consigli, apparentemente ho creato un po' di confusione nella copia-incolla del codice :embarrassed:




Quindi, alla fine ho abbozzato una cosa del genere:






    nc=["q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m", "è", "é", "ò", "à", "ù", "ì"]
    numbers=["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
    nc=sample(nc, 6)
    numbers=sample(numbers, 2)
    pswd=nc+numbers
    print("".join(pswd))






--- Ultima modifica di Gien in data 2017-12-18 18:43:11 ---


Pagina: 1



Esegui il login per scrivere una risposta.