亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

試了很多次都不對

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
  • 參與學習       758392    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

試了很多次都不對

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號