Python列表中的“TypeError: 不是所有参数在字符串格式化过程中被转换”
我正在写一个递归函数,这个函数的作用是把一个十进制的整数转换成其他进制的等价数,并打印出来。在第11行,我遇到了一个错误:
类型错误:在字符串格式化时并不是所有的参数都被转换
有没有人能看出我哪里出错了,应该怎么修复呢?
list = []
def con2base(integer, base):
if integer == 0:
if list == []:
list.insert(0, 0)
return 0
else:
return 0
while integer > 0:
list.insert(0, (integer % base)) <----- This is the offending line
return con2base(integer / base, base)
print ("Enter number to be converted: ")
integer = raw_input()
print ("Enter base for conversion: ")
base = raw_input()
con2base(integer, base)
print list
1 个回答
4
raw_input
这个函数总是会返回一个字符串对象,而不会返回真正的整数。所以你需要先把它转换成 int
类型。
print ("Enter number to be converted: ")
integer = int(raw_input())
print ("Enter base for conversion: ")
base = int(raw_input())
con2base(integer, base)
出现奇怪的错误信息是因为 %
是一个运算符,它也可以用在字符串上;具体来说,它是字符串格式化运算符。这个运算符可以让你创建一个包含“占位符”的字符串,然后在运行时用其他字符串来填充这些占位符。所以当你用 raw_input
获取数字后,再尝试使用 %
时,Python 会认为你是在进行字符串格式化或替换。