如果您使用整数调用函数,则您的函数可以正常工作,例如:
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
。您正在尝试将 a 添加str
到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 中,尝试向 a 添加一些东西是str
通过尝试将其他东西隐式转换为 a 开始的str
,并且正如错误所说,你不能用 a 来做到这一点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
和:
def display_positive_indices(strlen):
strlen
好的,最后一个成功了,所以问题出在strlen + 1
. 其他一切都无关紧要。所以,你已经缩小了你必须弄清楚、询问和/或理解的范围。
最后,如果你想让我们弄清楚这个main
函数出了什么问题,以及为什么它传递的是 astr
而不是int
你所期望的,你必须向我们展示这个函数。(在我的脑海中,我的第一个猜测是您正在使用input
从用户那里获取长度,而不是转换它,可能是因为您阅读的是 Python 2 文档input
而不是 Python 3 文档。但我会给这个猜测最多 20% 的机会是正确的。)