2017-08-29 108 views
-3

所以我們有一個練習,我們給孩子們,我們需要使用一個列表(或數組),以及'.remove()'方法和一個循環。Python循環,.remove和列表練習

我有以下代碼,代碼無法正常工作。

usernames = [ 
    'Steph','JHG','Greg','Matt','Rodney','David', 
    'Chris','Sally','Gemma','Pam','Daniel','JHG', 
    'JHG','Ishmael','Sam', 'JHG','Jacob' 
] 
for i in range(0,3): 
    for name in usernames: 
     usernames.remove('JHG') 
print(usernames) 

檢查

print (
'Success! all the JHG values have been deleted from the list, onto the next!') 
+0

那麼究竟是不是工作? –

回答

0
for name in usernames: 
    if name == 'JHG': 
     usernames.remove(name) 
1

或者作爲while循環:

while 'JHG' in usernames: 
    usernames.remove('JHG') 
0

的問題是你使用一個循環來刪除 'JHG' 的所有實例。由於for循環循環了很多次(對於外循環來說是3次,而對於內循環來說,它們的名稱與列表中的名稱一樣多),因此基本上可以刪除'JHG'。它前三次運行正常,取消了所有的JHG,但是第四次失敗,因爲沒有'JHG的左移!

如果你想讓學生使用循環,也許你可以檢查用戶名是否等於'JHG',然後刪除它。

for name in usernames: 
    if name == 'JHG': 
    usernames.remove(name) 
+1

「它第一次正常工作,刪除了所有JHG,但第二次失敗,因爲沒有'JHG的左邊刪除! < - usernames.remove('JHG')只刪除了一個'JHG'的發生。 – Moyote

+1

你說得對,我搞砸了。謝謝你讓我知道! – jwoff

0

簡單快速:

usernames = [name for name in usernames if x != 'JHG'] 
+0

一條襯裏很整齊,但我不會認爲它們對孩子來說很簡單。 – Moyote