2017-08-29 55 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