for循环用字母而不是数字

时间:2013-06-18 07:36:05

标签: python

我知道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

5 个答案:

答案 0 :(得分:9)

我认为将1添加到ord('g')比使用ord('h')

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

因为如果你想去'z',你需要知道'z'后面的内容。我打赌你可以比你查找它更快地输入+ 1

答案 1 :(得分:7)

for i in 'cdefg':

...

for i in (chr(x) for x in range(ord('c'), ord('h'))):

答案 2 :(得分:5)

这也有效,这样就非常清楚你正在使用的是什么:

import string
s = string.ascii_lowercase
for i in s[s.index('c'):s.index('h')]:
    print i

答案 3 :(得分: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

答案 4 :(得分:0)

这个怎么样?

for code in range(ord('c'), ord('h')):
    print chr(code)