王河云 2009年10月22日 星期四 21:50 | 2597次浏览 | 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 © 2024
京ICP备05028076号
回复 王河云 2009年10月23日 星期五 12:46