鱼C论坛

 找回密码
 立即注册
查看: 1570|回复: 3

[已解决]为什么自定义函数调用不了

[复制链接]
发表于 2020-12-29 14:27:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> 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
>>>
最佳答案
2020-12-29 14:37:09
本帖最后由 jackz007 于 2020-12-29 14:47 编辑

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

  3. L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
  4. for i in range(4):
  5.     print(by_name(L , i))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-29 14:31:52 | 显示全部楼层
迭代的是每一个元组  还要加一次循环迭代元组里面的元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 14:37:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-12-29 14:47 编辑

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

  3. L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
  4. for i in range(4):
  5.     print(by_name(L , i))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-30 12:04:14 | 显示全部楼层
  1. def by_name(N):
  2.     h = -1
  3.     for i in N:
  4.         k,j = i
  5.         h += 1
  6.         if isinstance(k, str) == True:
  7.             N[h] = (k.lower(),j)
  8.     return N
  9. L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]


  10. l = by_name(L)
  11. print(l)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表