2016-03-25 5 views
-4

Wie kann ich einen Python-Algorithmus zum Generieren einer 12-stelligen Zeichenfolge bestehend aus eindeutigen Groß- und Kleinbuchstaben und Zahlen erstellen?Generieren Sie eine zufällige Länge ist 12 Zeichenfolge, die Groß- und Kleinbuchstaben alpha und Zahlen besteht

In meiner Situation würde es als eine eindeutige Sitzung/Schlüssel-ID verwendet werden, die wahrscheinlich einmalig über 500K + Generationen sein würde.

Zum Beispiel:

837uNNM9abCb 

9HFRHcop24Cd 

Dank!

+2

was hindert Sie diese Texte selbst zu schreiben? –

+4

Klingt wie ein Job für [uUID] (https://docs.python.org/3.5/library/uuid.html), aber was hast du probiert? – ChrisP

+0

@MitchWheat Ich habe bereits versucht, dafür zu kodieren, aber es ist doppelt während der 500K + Generation. – user3789802

Antwort

1

Dies ist leicht mit einer While-Schleife und Python random und string Bibliotheken erreicht.

Code:

import random 
import string 

def create(): 
    _string, counter = "", 0 
    while counter < 12: 
     choice = random.choice(string.ascii_letters + string.digits) 
     if choice not in _string: 
      _string += choice 
      counter += 1 
     else: 
      pass 
    return _string 

print(create()) 

Ausgang:

YWdTocQs0R4X 

Was es tut:

  1. Variablen anlegen _string und counter.
  2. eine while-Schleife starten, die die Bedingung bricht nach counter < 12 falsch wird. (Es gibt einen Grund für eine while Schleife über eine for Schleife hier, dass ich später erklären wird)
  3. Verwendet zufällige Bibliothek Python eine Zufallszahl finden/Brief (Groß- und Kleinbuchstaben).
  4. Prüft, ob die Auswahl bereits in der Zeichenfolge vorhanden ist. Ist dies nicht der Fall, wird die Auswahl zur Zeichenfolge hinzugefügt. Aber wenn es passiert nichts, und die Schleife beginnt wieder über (Warum ich eine while Schleife über eine for Schleife verwendet
  5. die Zeichenfolge zurück

. Hinweis:! Wenn Sie mit Dubletten innerhalb der ok String diese Einzeiler arbeitet wesentlich effizienter.

print(''.join(random.choice(string.letters + string.digits) for _ in range(12))) 
+0

Es ist nur Großbuchstaben. Beispiel String besteht aus Groß- und Kleinbuchstaben und Zahlen. – user3789802

+1

@ user3789802 Korrigiert! – Signal

+0

Ich habe es und vielen Dank. – user3789802

Verwandte Themen