为了账号安全,请及时绑定邮箱和手机立即绑定

试了很多次都不对

for循环里name为啥不能in s?http://img1.sycdn.imooc.com//56ebfc480001492e03220144.jpg

正在回答

3 回答

56fb597300018d5105000191.jpg

56fb597300015de104300256.jpg

先看第一个代码    报错:在迭代过程中改变了set的大小   在循环过程中 由if判断而更改了set的内容  这个是不允许的  所以系统会进行报错         应该在代码中创建一个 s.copy  然后在循环过程中对s.copy进行更改(#注:这个过程迭代出来的是s的name  判断后更改的是s.copy的内容)  最后再输出s.copy 就OK


0 回复 有任何疑惑可以回复我~
#1

qq_Autohypnosis_0

忘了 这里不能先迭代出来s的name,是因为判断结果是每一个name都在L中。结果只会执行if的一个语句,而else里的s1.add就不会执行了。这样得到的结果是s1=set([]) 所以只能for name in L了,在判断是否在s内
2016-03-30 回复 有任何疑惑可以回复我~

不知道你说的是不是,在DOS窗口中运行中这样的问题

http://img1.sycdn.imooc.com//56effecf0001465703610201.jpg

这问题我也不知道怎么回事,但是下面可以验证for循环是没有错的,因为把print 单独拿出来输出的结果是跟答案一样的

http://img1.sycdn.imooc.com//56efffc80001033d03900168.jpg


0 回复 有任何疑惑可以回复我~

嵌套反了,应该是从L取值,然后判断是否在s里:

s = set(['Adam', 'Lisa', 'Paul'])

L = ['Adam', 'Lisa', 'Bart', 'Paul']

for name in L:

    if name in s:

        s.remove(name)

    else:

        s.add(name)

        

print s


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

试了很多次都不对

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信