我正在阅读《 Python的算法和数据结构问题解决》一书。我在第四章中正在使用示例。这个例子直接来自本书,但是当我运行它时,除了错误外什么都没有。这是书中的错误吗?还是我在这里遗漏了什么?
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, 16))
运行此命令时出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in to_str
File "<stdin>", line 6, in to_str
File "<stdin>", line 4, in to_str
TypeError: string indices must be integers
这本书是错了还是我错过了什么?如果是我的错,那我可能会错过什么?我已经整整重读了本章两次。我在文字中没有遗漏任何内容。
答案 0 :(得分:0)
您的书是为Python 2编写的; a / b
始终返回整数。
在Python 3中(您正在使用); a / b
的结果为float
(又称十进制),如果要在Python 3中获取整数结果,则可以使用a // b
。