按 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"
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"