如果您使用整数调用您的函数,则该函数可以正常工作,例如:
In [499]: display_positive_indices(3)
0 1 2 3
但是当您使用字符串调用它时,您会收到此错误,并且解释器会告诉您更多信息:
In [500]: display_positive_indices('3')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-500-dd39f751056c> in <module>()
----> 1 display_positive_indices('3')
<ipython-input-495-ac7e32dd0c50> in display_positive_indices(strlen)
2 print()
3 print(' ', end='')
----> 4 for i in range(strlen + 1):
5 print(i, end='')
6 if i != strlen:
TypeError: Can't convert 'int' object to str implicitly
问题是strlen + 1
。您正在尝试添加一个str
to an int
。您会得到完全相同的错误:
In [501]: strlen = '3'
In [502]: strlen + 1
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-502-5a3ed0dba868> in <module>()
----> 1 strlen + 1
TypeError: Can't convert 'int' object to str implicitly
在 Python 3 中,尝试向str
首先尝试将其他东西隐式转换为str
,并且,正如错误所说,你不能用int
.
同时,为了将来参考,以下是如何调试这样的错误:
首先,您知道函数中的哪一行有错误。因此,请继续删除内容,直到错误消失。第一的:
def display_positive_indices(strlen):
for i in range(strlen + 1):
pass
同样的错误。所以:
def display_positive_indices(strlen):
range(strlen + 1)
然后再次:
def display_positive_indices(strlen):
strlen + 1
And:
def display_positive_indices(strlen):
strlen
好的,最后一个成功了,所以问题出在strlen + 1
。其他一切都无关紧要。因此,您已经缩小了需要弄清楚、询问和/或理解的范围。
最后,如果您希望我们找出问题所在main
函数,以及为什么它传递一个str
而不是int
如您所料,您必须向我们展示该功能。 (在我的头顶,我的第一个猜测是你正在使用input
从用户那里获取长度,而不是转换它,可能是因为您阅读了 Python 2 文档input
而不是 Python 3 文档。但我认为这个猜测最多只有 20% 的机会是正确的。)