2016-07-01 17 views
1

Ziel: zählen durch Buchstaben statt Ganzzahlen.Zählen nach Buchstaben in Python

Gibt es einen sauberen Weg, um in Python-2.7 zu zählen? Ich habe ein Programm, in dem ich einige Daten per Brief aufzähle, und meine Lösung wäre für jemanden, der meinen Code liest, nicht sehr klar.

Ich habe durch die Standard-Dokumentation überprüft, aber ich sehe nichts eingebautes.

Was ich suche:

for count in range('A', 'G'): 
    print count 

output[1]: 
'C' 
'D' 
'E' 
'F' 

Wie ich es tun würde:

Lösung A: Verwenden Sie ein Wörterbuch

letters = { 
    1:'A' 
    2:'B' 
    3:'C' 
    ... 
} 

for count in range(2, 6): 
    print letters[count] 

Lösung B: Uns chr() e und ord()

for count in range(2, 6): 
    print chr(ord('A') + count) 

Relevanz:

Ich arbeite an einem Sonntag Papier crytogram Löser. Ein Teil meines Algorithmus beinhaltet die Klassifizierung von Wörtern nach ihrem Buchstabencode. Zum Beispiel

print letter_code('banana') 
output[2]: 'ABCBCB' 
+1

'string.ascii_lowercase' oder' string.ascii_uppercase' funktionieren sollte. –

Antwort

1

Ihre Lösung B könnte ausgedrückt werden:

for charcode in range(ord('B'), ord('G')): 
    print chr(charcode) 

Aber Ihr größeres Problem zu attackieren, wie etwa:

from string import ascii_lowercase, ascii_uppercase 

def letter_code(string): 
    indexes = [ascii_lowercase.index(letter) for letter in string] 
    return "".join(ascii_uppercase[indexes.index(number)] for number in indexes) 

print letter_code('banana') 

Sie "ABCBCB"

Gibt
+0

Schön! Ich versuche immer noch, die Mechanik hinter der "" ".join (..." Linie) zu verstehen, aber wirklich nett und prägnant. –

2
import string 
alphabet = string.ascii_uppercase 

>>> for char in alphabet[2:6]: 
...  print char 
...  
C 
D 
E 
F 
>>> 
0

Hier ist eine Funktion, die das tun würde, was Sie wollen:

import string 

def enumerate(first, last): 
    alphabet = string.ascii_uppercase 
    start = alphabet.index(first) 
    while alphabet[start] != last: 
     print alphabet[start] 
     start += 1 
    print last 
0

Eine andere Lösung, die ich habe für meine spezielle Anwendung werden gern ist:

alphabet = iter('ABCDEFGHIJKLMNOPQRSTUVWXYZ') 
print next(alphabet) 
Verwandte Themen