我最近才開始自己學習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.我究竟做錯了什么?
2 回答

慕后森
TA貢獻1802條經驗 獲得超5個贊
您收到此錯誤是因為第二個 return 語句中 n/base 的值是一個浮點數。只需將其顯式轉換為整數即可。
def to_str(n, base):
if n < base:
return convert_string[n]
else:
return to_str(int(n/base), base) + convert_string[n%base]

翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
在 Python 3 中,/
運算符始終返回一個float
對象,即使您要除的兩個數字都是整數。如果您想要整數除法,請改用//
運算符:
return to_str(n // base, base) + convert_string[n % base]
添加回答
舉報
0/150
提交
取消