使用range和enumerate枚举Ascii字符

时间:2018-02-04 22:36:50

标签: python

我是这个枚举命令的新手,我不确定我是否应该像这样使用它,我想要做的是枚举0到129之间的ASCII字符,我得到的是'每个角色前1'。

for x in range(129):
    xxx = chr(x)
    z = list(xxx)
    for i, a in enumerate(z, 1):
        print(i, a)

随机文字输出:

1 .
1 /
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9

1 个答案:

答案 0 :(得分:2)

您正在循环遍历中的单个字符的列表

>>> xxx = chr(65)
>>> xxx
'A'
>>> list(xxx)
['A']
>>> len(list(xxx))
1

然后循环遍历该单个字符enumerate()结果,是的,您只获得1

你为x的每个值重复那个内循环,所以你得到它129次。正是您的外for x in range(129)循环使1重复。

您将enumerate()用于外部循环,并且每次将单个字符转换为列表都没有意义:

for i, x in enumerate(range(129)):
    xxx = chr(x)
    print(i, xxx)

请注意,x 已经增加整数。 enumerate()这真的太过分了。只需打印x + 1相同的数字:

for x in range(129):
    xxx = chr(x)
    print(x + 1, xxx)