2014-01-29 65 views
0

我试图找到该函数中的错误类型错误:类型错误,为了解决

def buggy_join(input, sep=","): 
    return sep.join(input) 

当我试图用调用的函数:

buggy_join(range(6)) 

它显示类型的错误陈述期望String int找到。 我该如何解决它。join函数只能与basestring类型?

input = list(itertools.chain(*enumerate("abc"))) 
buggy_join(input, ".") 

即使对于上述调用,它也会导致相同的错误。

+1

是不是这个练习的全部点,你弄清楚如何自己调试它? – jonrsharpe

+0

是的,我想我已经接近了,但是,我怎样才能改变它? – Ramya

回答

0

既然你已经正确想通了这个问题,这里是一个解决方案:

def not_buggy_join(input, sep=","): 
    return sep.join(map(str, input)) 

the documentationmap(function, iterable)

应用functioniterable每一个项目,并返回的列表结果。

在这种情况下,它将所有内容都转换为str。使用你自己的例子:

>>> not_buggy_join(itertools.chain(*enumerate("abc"))) 
'0,a,1,b,2,c' 
+0

我想过同样的答案,但是,怀疑它的正确性谢谢..! – Ramya

+1

如果你想到它,为什么不在来之前测试它呢? – jonrsharpe