例如,我们说我已经为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的左边?
答案 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()
你也可以使用枚举,正如另一个答案所指出的那样。