python函数练习进入死循环

问题遇到的现象和发生背景

第6章-6 求指定层的元素个数
分数 40
作者 陈春晖
单位 浙江大学
输入一个嵌套列表,再输入层数,求该层的数字元素个数。

输入格式:
第一行输入列表
第二行输入层数

输出格式:
在一行中输出元素个数

输入样例:
在这里给出一组输入。例如:

[1,2,[3,4,[5,6],7],8]
3
输出样例:
在这里给出相应的输出。例如:

2

用代码块功能插入代码,请勿粘贴截图

def jisuan(a,leave,mark):
    s=0
    for i in a:
        if mark==leave:
            if type(i)==int:
                s+=1
        else:
            s+=jisuan(i,leave,mark+1)
    return s
a=eval(input())
leave=int(input())
s=jisuan(a,leave,1)
print(s)
运行结果及报错内容

死循环为什么

缺少判断是列表的条件

def jisuan(a, leave, mark):
    s = 0
    for i in a:
        if mark == leave:
            if type(i) == int:
                s += 1
        else:
            if type(i) == list:
                s += jisuan(i, leave, mark + 1)
    return s


a = eval(input())
leave = int(input())
s = jisuan(a, leave, 1)
print(s)