Suche Funktion die eine Liste mit Buchstaben zurückliefert

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tj

Dienstag 19. November 2002, 10:27

Hallo,

ich bin gerade am suchen ob es eine Funktion gibt, die ähnlich wie range() eine Liste mit Zahlen liefert, mir eine Liste mit Buchstaben zurückgibt. Also range(a,z) oder so ähnlich.

gibt es da etwas?

mfg
tj
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Dienstag 19. November 2002, 11:09

Hallo!
tj hat geschrieben:ich bin gerade am suchen ob es eine Funktion gibt, die ähnlich wie range() eine Liste mit Zahlen liefert, mir eine Liste mit Buchstaben zurückgibt. Also range(a,z) oder so ähnlich.
Puh, keine Ahnung. Irgendwie meine ich, es gäbe sowas, aber das kann auch bei Perl gewesen sein. Vielleicht weiß sonst jemand was.
Meine Vorschläge aus dem Handgelenkt:

Code: Alles auswählen

# brute force
for ch in list("ABCDEFGHIJKLMNOPQRSTUVWXYZ"):
    print ch

# politisch korrekt
for ch in map(lambda x: chr(x),range(ord('A'),ord('Z')+1)):
    print ch 
Letzteres ließe sich natürlich problemlos in einer range()-ähnlichen Funktion kapseln.

Jan
tj

Dienstag 19. November 2002, 13:08

Hallo Voges,

danke für deine Antwort.

So etwas ähnliches wie deine Codebeispiele habe ich mir mitlerweile auch zusammengebaut. Ist zwar nicht ganz das was ich haben wollte aber es erfüllt seinen Zweck.

Sollte jemand die Funktion kennen immer her damit :wink:

mfg
tj
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 19. November 2002, 13:58

Hallo tj,

simple Version:

Code: Alles auswählen

charrange = lambda a, b: reduce(lambda x, y: x+chr(y), range(ord(a),ord(b)+1),"")
extendet Version, damit lassen sich auch verdrehte Strings erzeugen:

Code: Alles auswählen

>>> charrange = lambda a, b: reduce(lambda x, y: x+chr(y), range(ord(a),ord(b)+((a <= b) or -(b < a)),(a <= b) or -(b < a)),"")
>>> charrange("a", "z")
'abcdefghijklmnopqrstuvwxyz'
>>> charrange("z", "a")
'zyxwvutsrqponmlkjihgfedcba'
Gruß

Dookie
akIra

Montag 2. Dezember 2002, 13:01

Heya,
ich habe mal einen Password Generator geschrieben.

Mögliche Zeichen per Randomize aus Liste chars, sieht dann wie folgt aus.

Code: Alles auswählen

def build_schars():                                       #Spezial Zeichen
    global chars
    for x in range(33,48): chars.append(chr(x))
    for x in range(58,65): chars.append(chr(x))
    for x in range(91,97): chars.append(chr(x))

def build_nchars():                                       #Nummern
    global chars
    for x in range(48,58): chars.append(chr(x))

def build_uchars():                                       #Grossbuchstaben
    global chars
    for x in range(65,91): chars.append(chr(x))

def build_lchars():                                       #Kleinbuchstaben
    global chars
    for x in range(97,123): chars.append(chr(x))
Vielleicht hilft es,
akI
Antworten