Chenshch 发表于 2020-12-29 14:27:38

为什么自定义函数调用不了

>>> def by_name(N):
       
        for i in N:
               
                if isinstance(i,str) == True:
                       
                        return i.lower()

               
>>> L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
>>> l = by_name(L)
>>> print(l)
None
>>>

headche120 发表于 2020-12-29 14:31:52

迭代的是每一个元组还要加一次循环迭代元组里面的元素

jackz007 发表于 2020-12-29 14:37:09

本帖最后由 jackz007 于 2020-12-29 14:47 编辑

       函数 by_name() 的输入参数是由元组元素构成的列表,所以,i 枚举到的是元组,例如,('Bob', 75),还到不了字符串,所以, i . lower() 实际上调用的是元组的方法,元组是没有 lower() 方法的。所以,这个自定义函数是错误的。
def by_name(N , I):
    return N . lower()

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
for i in range(4):
    print(by_name(L , i))

tryhi 发表于 2020-12-30 12:04:14

def by_name(N):
    h = -1
    for i in N:
      k,j = i
      h += 1
      if isinstance(k, str) == True:
            N = (k.lower(),j)
    return N
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]


l = by_name(L)
print(l)
页: [1]
查看完整版本: 为什么自定义函数调用不了