老大救急--怎么可以保证全部遍历一遍

老大救急--怎么可以保证全部遍历一遍



[Copy to clipboard] [ - ]
CODE:
def f(card,a):
        global i
        for x in a:
                if x[i] and card[(x[i+1]-1):(x[i+1]-1+x[i+2])]==x[i]:
                        if x not in temp:
                                temp.append(x);print x
                        if (len(x)-1)>(i+3) and x[i+3]:
                                i+=3;f(card,temp)

这是一个小函数 a是个list  temp=[]
根据if 条件来判断 并把符合条件的放到temp中
但是发现

[Copy to clipboard] [ - ]
CODE:
def f(card,a):
        global i
        for x in a:
                if x[i] and card[(x[i+1]-1):(x[i+1]-1+x[i+2])]==x[i]:
                        if x not in temp:
                                temp.append(x);print x

只有这部分的时候 可以把符合条件的a的所有元素都遍历一次
但是加上后面的if后 就不能保证全部都会取到
如何能保符合条件的x都压到temp中
谢谢

发代码请使用[code]标签,并且禁用 Smilies
BS自己,看不懂lz写的是什么
代码怎么这么乱呢?一行后面还有一行,能不能写成两行。另外

x[i]是怎么可以使用的呢?连个测试的数据都没有,都不知道你这个东西是干嘛的。新加的那段if既修改了i值,又进入到一个递归处理,好象很复杂的样子。


QUOTE:
原帖由 3751 于 2006-3-21 10:41 发表
BS自己,看不懂lz写的是什么

我也看不懂,感觉Python代码不该这样,呵呵
各位不好意思
今天早上发上来比较混乱
def f(card,a):
        global i
        for x in a:
                if x[i] and card[(x[i+1]-1):(x[i+1]-1+x[i+2])]==x[i]:
                        if x not in temp:
                                temp.append(x)
                        if (len(x)-1)>(i+3) and x[i+3]:
                                i+=3
                                f(card,temp)

这个函数要达到一个校验卡号的目的
i=0,card为读入的卡号
a则是判断条件 从数据库取 取得后如['955881', 1, 6, '7886', 7, 4, '222', 11, 3, '456', 14, 3, '', '', '', '001', '\xc4\xb5\xb5\xa4xx\xbf\xa8']之类 各位不要注意判断语句
只是想知道怎么样 才能在第三,四,五行的for if语句里 把符合条件的x都遍历一次
现在这么写 有可能碰到一个符合条件的x后 就不管后面有没有还有符合的 就直接走到下面的语句中
那你就只保留必要的代码进行测试好了。