TypeError:“int”对象是不可订阅的python,无法找出原因?

2024-04-26 13:42:57 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码,代码的目的是假设两个整数并产生一个列表.开始对于一个数字,将其非零数字相乘,然后将该乘积与该数字相加。这是序列中的新数字。重复示例:从12: 将数字(1*2)相乘,然后相加->;14。将其数字(1*4)相乘,再加上->;18,依此类推在上面当它达到极限时将停止(除了起始数字)。two integers 12,5(limit) and produce a list ['12','14','18','26','38','62']我检查了很多次,不知道为什么会出现TypeError:'int'对象不可订阅。有人能帮我追踪吗?:)

def check_n(n,p,p1,old_t,new_t,fn1,t,limit):
    if len(new_t) - 1 != limit:
        if n != "":
            if int(n[0]) != 0:
                p = p*int(n[0])
                t = p + fn1
                return check_n(n[1:],p,p1,old_t,new_t,fn1,t,limit)
            else:
                return check_n(n[1:],p,p1,old_t,new_t,fn1,t,limit)
        else:
            pl = p1 + "," + str(t)
            old_t = str(fn1) + p1
            new_t = old_t.split(',')
            return check_n(t,p,p1,old_t,new_t,fn1,t,limit) 
    else:
        return new_t 
def in_both_sequences(n,limit):
    fn1 = n
    n = str(n)
    p = 1
    p1 = ""
    old_t = []
    new_t = []
    t = 0
    return check_n(n,p,p1,old_t,new_t,fn1,t,limit)

Tags: 代码gtnewreturnifdefcheck数字
2条回答

我无法复制同样的错误。但我调整了方法,这是你想要的清单

def check_n(base, limit):
    result_list = [str(base)]

    # Build the list to the limit
    for x in range(0, limit):

        # Pull the latest number
        str_base = result_list[len(result_list) - 1]

        # Multiply non-zero digits of the str_base
        prod = int(str_base[0])
        for y in range(1, len(str_base)):
            if int(str_base[y]) != 0:
                prod = prod * int(str_base[y])

        prod += int(str_base)

        result_list.append(str(prod))

    return result_list

在check\ n函数中,n必须是字符串。但当支票打到底部时

return check_n(t,p,p1,old_t,new_t,fn1,t,limit)

输入t,它是一个整数。你知道吗

相关问题 更多 >