为什么函数1没有调用fun2

时间:2019-06-18 14:00:40

标签: python-3.x

为什么功能不起作用?

def fun2(a,b):
    a.sort(key = lambda item: ([str,int].index(type(item)), item))
    print(a[b-1],a[b-2])

def filter(x,y):
    list2=[]
    q=200
    while x!=200:
        if  y[x]%1 ==0 :
            list2.append(y[x])
            x=x+1
    fun2(list2,q)
list1=[]
a=0
b=0
c=0.5
d=65
z=0
while a!=100:
    list1.append(a)
    a=a+1
while b!=50:
    list1.append(c)
    b=b+1
    c=c+0.43
while d!=115:
    list1.append(chr(d))
    d=d+1
q=len(list1)
print(list1)
print(filter(z,list1))

为什么过滤器未调用函数2? 为什么我在这里犯了错误? 我想从list2打印2个最大的整数

1 个答案:

答案 0 :(得分:0)

这里有无限循环:

while x != 200:
    if  y[x]%1 == 0 :
        list2.append(y[x])
        x = x + 1

y[x]不是整数,则条件不是True,并且x也不再递增。

您可能想做:

while x <= 200:
    if y[x] == int(y[x]):
        list2.append(y[x])
    x += 1

更新:哦,我发现您的列表中还包含非数字项... 另外,您不应使用while循环遍历列表。这是一个更好的方法

for item in y:
    try:
        if item == int(item):
            list2.append(item)
    except ValueError:
        pass