鱼C论坛

 找回密码
 立即注册
查看: 1889|回复: 4

[已解决]sum()函数遇到字符串时如何解决报错

[复制链接]
发表于 2022-5-30 13:15:15 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 蔡怀建 于 2022-5-30 13:17 编辑

各位大神,我对第16讲课后习题动动手1的参考答案进行了改写,为什么输出值始终为0,求大神解答


y=input()
   
def sum(x):
    result = 0
   
    for each in x:
        if (type(each) == int) or (type(each) == float):
            result += each
        else:
            continue

    return result

print(sum(y))

最佳答案
2022-5-30 15:01:24

因为 input 函数返回的是 字符串类型,所以导致你 type 进行判断时 ,永返回 str 导致 if 条件永不成立

这里甲鱼哥定义 sum 函数的 x 主要是接收容器类型数据,例如列表,而不是通过 input 进行传参,这里你将 y 改成一个含有多种元素的列表,即可正常执行代码

  1. y=["100", 10, "FishC", 6.6]
  2.    
  3. def sum(x):
  4.     result = 0
  5.    
  6.     for each in x:
  7.         if (type(each) == int) or (type(each) == float):
  8.             result += each
  9.         else:
  10.             continue

  11.     return result

  12. print(sum(y))
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-30 13:35:56 | 显示全部楼层
  1. y=int(input()) #强制转换为数字类型,若不是数字类型的字符串则报错
  2.    
  3. def sum(x):
  4.     result = 0
  5.    
  6.     for each in x:
  7.         if (type(each) == int) or (type(each) == float):
  8.             result += each
  9.         else:
  10.             continue

  11.     return result

  12. print(sum(y))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-30 13:51:15 | 显示全部楼层

emmm  补充一下哈, 如果y 直接用Int()转换了的话,那下面if (type(each)) == "float" 就不太有意义了,建议改成eval() 会比较好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-30 15:01:24 | 显示全部楼层    本楼为最佳答案   

因为 input 函数返回的是 字符串类型,所以导致你 type 进行判断时 ,永返回 str 导致 if 条件永不成立

这里甲鱼哥定义 sum 函数的 x 主要是接收容器类型数据,例如列表,而不是通过 input 进行传参,这里你将 y 改成一个含有多种元素的列表,即可正常执行代码

  1. y=["100", 10, "FishC", 6.6]
  2.    
  3. def sum(x):
  4.     result = 0
  5.    
  6.     for each in x:
  7.         if (type(each) == int) or (type(each) == float):
  8.             result += each
  9.         else:
  10.             continue

  11.     return result

  12. print(sum(y))
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-30 17:37:52 | 显示全部楼层
y=input()
上面这个转化一下,就可以选择int或者float了:
t=eval(y)
然后你再调用t,你输入的类型是int返回就是int,输入float就是float
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 06:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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