5

我知道for循环:

    for i range(2, 6):
        print i

给出这个输出:

    2
    3
    4
    5

我也可以用字母来做这件事吗?例如:

    # an example for what i'm looking for
    for i in range(c, h):
        print i


    c
    d
    f
    g
4

5 回答 5

9

我认为添加1ord('g')使用更好ord('h')

for code in range(ord('c'), ord('g') + 1):
    print chr(code)

因为如果你想去'z',你需要知道'z'后面的内容。我敢打赌,你打字+ 1的速度比你查的快。

于 2013-06-18T07:41:17.720 回答
8
for i in 'cdefg':

...

for i in (chr(x) for x in range(ord('c'), ord('h'))):
于 2013-06-18T07:37:46.817 回答
5

这也有效,这样可以非常明确地处理您正在使用的内容:

import string
s = string.ascii_lowercase
for i in s[s.index('c'):s.index('h')]:
    print i
于 2013-06-18T07:40:11.180 回答
3

没有理由不使用:

>>> for char in "cdefg":
...     print(char)
c
d
e
f
g

即使您不是程序员,您也可以弄清楚循环的作用,它基本上是英语。它也更干净,更短,最好的部分是它比chr(ord())解决方案快 6 倍:

>>> import timeit
>>> timeit.timeit("for i in 'abcdefg': x = i")
0.27417739599968627
>>> timeit.timeit("for i in range(ord('a'), ord('g') + 1): x = chr(i)")
1.7386019650002709
于 2013-06-18T09:37:30.553 回答
0

这个怎么样?

for code in range(ord('c'), ord('h')):
    print chr(code)
于 2013-06-18T07:38:55.167 回答