猿问

Python(递归):递归中的“类型错误:字符串索引必须是整数”

我最近才开始自己学习DS&A,在本书的递归部分,它列出了下面的代码作为用于将整数转换为字符串的递归的基本示例:


def to_str(n,base):

convert_string = "0123456789ABCDEF"

if n < base:

    return convert_string[n]

else:

    return to_str(n/base,base) + convert_string[n%base]

当我调用该函数并使用打印时print(to_str(1453,10)),,出现错误:TypeError: string indices must be integers.


我究竟做错了什么?


一只斗牛犬
浏览 188回答 2
2回答

慕后森

您收到此错误是因为第二个 return 语句中 n/base 的值是一个浮点数。只需将其显式转换为整数即可。def to_str(n, base):&nbsp; &nbsp; if n < base:&nbsp; &nbsp; &nbsp; &nbsp; return convert_string[n]&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; return to_str(int(n/base), base) + convert_string[n%base]

翻翻过去那场雪

在 Python 3 中,/运算符始终返回一个float对象,即使您要除的两个数字都是整数。如果您想要整数除法,请改用//运算符:return&nbsp;to_str(n&nbsp;//&nbsp;base,&nbsp;base)&nbsp;+&nbsp;convert_string[n&nbsp;%&nbsp;base]
随时随地看视频慕课网APP

相关分类

Python
我要回答