Python列表中的“TypeError: 不是所有参数在字符串格式化过程中被转换”

0 投票
1 回答
754 浏览
提问于 2025-04-18 18:15

我正在写一个递归函数,这个函数的作用是把一个十进制的整数转换成其他进制的等价数,并打印出来。在第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 会认为你是在进行字符串格式化或替换。

撰写回答