按 Python 中的字母计数

Counting by letters in Python

Objective: 按字母而不是整数计数。

在 Python-2.7 中是否有一种干净的按字母计数的方法?我有一个程序,我在其中按字母枚举一些数据,我的解决方案对于阅读我的代码的人来说不是很清楚。

我一直在检查标准文档,但没有看到任何内置内容。

我在找什么:

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

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

我会怎么做:

解决方案A:使用字典

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

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

解决方案 B:使用 chr()ord()

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

相关性:

我正在研究星期日报纸密码图解算器。我的算法的一部分涉及按字母代码对单词进行分类。例如,

print letter_code('banana')
output[2]: 'ABCBCB'
import string
alphabet = string.ascii_uppercase

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

这是一个函数,可以满足您的需求:

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

我喜欢的另一个解决方案是:

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

你的解B可以表示为:

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

但要解决更大的问题,如何:

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')

给你"ABCBCB"