如何谈论比较字符串中字符的位置?

时间:2015-02-28 23:26:36

标签: python

例如,我们说我已经为A,B和C分配了整数值,如下所示:

def values(char):
    if char == 'A':
        val = 1
    if char == 'B':
        val = 2
    if char == 'C':
        val = 3
    return value

现在我有另一个函数用于给我一个字符串A,B和C的值。如果字符小于左边的字符,则总值会减少。否则,该值将继续增加。

我有一个for循环:

for c in abcstring[1:]:
   if values(c) < values(c-1)

但是它没有工作,我记得它,因为c仍然是字符串中的一个字母,你不能从一个字母中减去1。那么,我如何指定我想要字符的值在c的左边?

2 个答案:

答案 0 :(得分:3)

要在迭代时跟踪索引,可以使用枚举!

for index,c in enumerate(abcstring[1:]):
    if values(c) < values(abscstring[index-1]):
        ...

或者,为了保存切片,您甚至可以使用start参数:

for index,c in enumerate(abcstring, start=1):
    if values(c) < values(abscstring[index-1]):
        ...

哪个稍微冗长,但也许更清楚。

答案 1 :(得分:2)

首先,您可以使用字典简化values函数以删除if语句。此外,您的功能无法正常工作,因为您正在分配val = some number,但后来return value

char_dict = {'A': 1, 'B': 2, 'C': 3}

def values(char):
    return char_dict[char]

以下是两种引用前一个字符的方法。第一个是跟踪它。

previous = abcstring[0]

for c in abcstring[1:]:
    if values(c) < values(previous):
        do_something()
    previous = c

或者您可以使用范围。

for i in range(1, len(abcstring)):
    c = abcstring[i]
    previous = abcstring[i-1]
    if values(c) < values(previous):
        do_something()

你也可以使用枚举,正如另一个答案所指出的那样。