王河云

王河云的博客

他的个人主页  他的博客

PYTHON递归和一些基础问题

王河云  2009年10月22日 星期四 21:50 | 2603次浏览 | 2条评论

PYTHON,递归

def getTag(tags,i=0):
  index = 0
  length = len(tags) - 1
  while index != length:
    temp1 = tags[index].split(' ')
    temp2 = tags[index+1].split(' ')
    if temp1[i] == temp2[i]:
      index +=1
    elif i == 1:
      return temp1[0]
        elif i == 2:
          return temp1[0]+temp1[1]
        else i == 3:
          return temp1[0]+temp1[1]+temp1[2]
  else:
    return getTag(tags,i+=1)
def main():
  li = ['Asus 7861','Asus TAG','Asus This']
  print getTag(li)   
if __name__ =='__main__':
  main()

说明:

  将列表li元素拆分,然后都取各自的第一个字符串比较,第一个比较完之后,再比较第二个字符串,只要有不相等,就可以判段第一个字符串是我们需要的结果,返回给调用它的函数。当然了,这只是程序的一部分。最开始困住我的是循环的问题,到今天我才彻底明白IF语句与WHILE的不同,在IF处判断,如果为真,则进入IF子块并执行,执行完后循环就结束了,而我居然天真的以为它还要回去继续判断(这么多年了,居然第一次发现这个巨大的错误),之后就加了一个WHILE来让循环继续,第二个地方是关于列表的长度,列表和其它语言的数值一样,下标都是从0开始,在INDEX循环时,居然越界(这些细节问题出现太多次了)。最后一点就是递归的返回值了,之前一直未用过PYTHON的递归,可以说这是第一碰到,main中每次调试的时候getTag()总是为空,原来PYTHON的每一个逻辑块都必须有个返回值,如果没有,默认为NONE,在加上了红色的那个RETURN之后,返回值终于是我需要的了。

 结论:总以为自己把PYTHON的语法了解透彻了,原来还有很多细节需要自己去慢慢发掘。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
王河云

回复 王河云  2009年10月23日 星期五 12:46

语法错误?什么语法?

0条回复

王依依

回复 王依依  2009年10月22日 星期四 22:30

你代码好多语法错误. 目前没看明白代码是干嘛的.

初始, 单步, 结束. 三大条件, 尤其结束.
另外注意下返回值

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号