2013-11-22 33 views
-1

我在这里有一个函数,我希望它可以计算列表的长度,如1,2,3,4,5 = 5 但该函数只计算数字1234 = 4 如何解决这个使用python查找recurssion的列表长度

def mylen(alist): 
     if alist: 
       return 1 + mylen(alist[1:]) 
     return 0   

def main(): 
     alist=input("Enter a list of number :") 
     print(mylen(alist)) 
main() 

FYI我不能使用LEN

+0

呵呵? len(“1234”)是4 ....最新的问题是什么? –

+0

我想要它计算列表的长度 – rggod

+0

示例输入= [1,2,3,4,5]输出= 5而不是9我喜欢我目前如何 – rggod

回答

3

我假设你想mylen(“1234”),是= 1。把你的输入和逗号分隔符分裂的数字。

def mylen(alist): 
     if alist: 
       return 1 + mylen(alist[1:]) 
     return 0   

def main(): 
     alist=input("Enter a number :") 
     print(mylen(alist.split(',')) 
main() 

计算机不需要为内置于该语言的内容做太多处理。这将工作得很好:

alist=input("Enter a number :") 
print(len(alist.split(',')) 
+0

我试图找到长度使用recurssion – rggod

+0

的长度什么? (字符串值?或数字列表(整数)?) – Back2Basics

+0

对于误解我很抱歉,我的意思是数字列表 – rggod

0

我跑你的代码,结果似乎是正确的。如果你的输出是9而不是5,可能是因为逗号也被计算在内。

print(len(alist.split(',')) 
0

在Python 3:

alist=input("Enter a list of number :") 

alist现在将是一个字符串。如果输入“1,2,3,4,5”,则a list将是字符串"1,2,3,4,5",而不是数字列表[1,2,3,4,5]

字符串是序列类型,就像列表一样,所以您的代码也可以与字符串一起使用,并计算其中的元素(字符)数。

您可以使用split将输入转换列表中(注意,这仍然是字符串,而不是数字的名单,但是这不要紧,这个练习)

userinput = input("Enter a list of number :") 
    alist = userinput.split(",")