鱼C论坛

 找回密码
 立即注册
查看: 1290|回复: 5

[已解决]Python课后练习第16讲

[复制链接]
发表于 2018-1-18 21:59:54 | 显示全部楼层 |阅读模式

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

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

x
动动手第二题那个求和剔除字符串的题
我写了一个这样的:
numbers = [-5,9.5,14.5,2,-85,16,22,99,'a',24,'b']
results = 0
for each in numbers:
    if type(each) != int or type(each) != float:
        numbers.remove(each)
        numbers2 = list(numbers)
print(numbers2)

如果我只判断整型是可以成功的,但是加入了判断浮点型后就不行了,会把负数和几个整数一起删掉,不知道为什么?求大神指点
最佳答案
2018-1-19 10:08:07
一看这段程序与你最后的要求就知道你的and与or的逻辑理解的不好,这里应该用and,程序小改如下:
numbers = [-5,9.5,14.5,2,-85,16,22,99,'a',24,'b']
for each in numbers:
    if type(each) != int and type(each) != float:
        numbers.remove(each)
print(numbers)
而如果你要用or的话也可以,只是程序改成这样,估计你应该能明白and与or的逻辑是怎么回事了
numbers = [-5,9.5,14.5,2,-85,16,22,99,'a',24,'b']
numbers2=[]
for each in numbers:
    if type(each) == int or type(each) == float:
        numbers2.append(each)
print(numbers2)
是不是很容易理解?是不是一下就知道你前边那个程序问题出在哪里了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-18 22:03:04 | 显示全部楼层
if type(each) != int or type(each) != float:
        numbers.remove(each)
        numbers2 = list(numbers)

大哥,你都知道整型和浮点型不一样了。你干嘛还放一起操作。

你看这样能理解了不???
if type(each) != int
        numbers.remove(each)
        numbers2 = list(numbers)
if type(each) != float:
        numbers.remove(each)
        numbers2 = list(numbers)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-18 22:46:47 | 显示全部楼层
本帖最后由 yjsx86 于 2018-1-18 23:45 编辑

这段代码 一看就会出错


numbers = [-5,9.5,14.5,2,-85,16,22,99,'a',24,'b']
print(list(filter(lambda x: isinstance(x,int) or isinstance(x,float), numbers)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-19 08:58:01 | 显示全部楼层
把 or 改成 and
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-19 10:08:07 | 显示全部楼层    本楼为最佳答案   
一看这段程序与你最后的要求就知道你的and与or的逻辑理解的不好,这里应该用and,程序小改如下:
numbers = [-5,9.5,14.5,2,-85,16,22,99,'a',24,'b']
for each in numbers:
    if type(each) != int and type(each) != float:
        numbers.remove(each)
print(numbers)
而如果你要用or的话也可以,只是程序改成这样,估计你应该能明白and与or的逻辑是怎么回事了
numbers = [-5,9.5,14.5,2,-85,16,22,99,'a',24,'b']
numbers2=[]
for each in numbers:
    if type(each) == int or type(each) == float:
        numbers2.append(each)
print(numbers2)
是不是很容易理解?是不是一下就知道你前边那个程序问题出在哪里了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-1-19 10:12:04 | 显示全部楼层
冰封雪舞 发表于 2018-1-19 10:08
一看这段程序与你最后的要求就知道你的and与or的逻辑理解的不好,这里应该用and,程序小改如下:
numbers  ...

很感谢,确实是and和or理解的不够
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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